2017-06-04 9 views
-1

私のフォーラムのカスタム関数をPHPに基づいて作成しようとしています。私は自分のインデックス着陸スタイルのページを私のphpbbフォーラムとは別に持っています。ホームページの統計情報タイプウィジェットの一部として、最新の登録ユーザ名を表示しようとしています。私は、これまでに次のコードを持っている:結果セットからフィールドを取得し、ページ(php/mysql/phpbb)に文字列として出力する方法

//Function code 

//Total Posts calculation 
$result = $mysqli->query("SELECT DISTINCT post_id FROM phpBB_posts 
WHERE post_id <= '1'"); 

$total_posts = $result->num_rows; 

//Total topics calculation 
$result2 = $mysqli->query("SELECT DISTINCT topic_id FROM phpBB_topics WHERE topic_id <= '1'"); 

$total_topics = $result2->num_rows; 

//Member count calculation 
$result3 = $mysqli->query("SELECT DISTINCT user_id FROM phpBB_users WHERE user_id <= '1'"); 

$total_members = $result3->num_rows; 

//Newest member 
$result4 = $mysqli->query("SELECT * FROM phpBB_users WHERE group_id <> 6 ORDER BY user_regdate DESC LIMIT 1"); 

$newestMember = $result4->name; 

//End of function 

//function output 
printf("Total Posts: ".$total_posts."<br/> Total Topics: ".$total_topics."<br/>Total Members: ".$total_members."<br/>Our newest member is: ".$newestMember); 

私は悩みを抱えているところ、「新しいメンバー」セクションがあり、残りの部分は、私はあなたが任意のポインタを持っている場合/批判は、私は喜んでそれを取るよ、好きな作品ボード。

結果セットからusername列の値を返すことができるようにしたいのですが、そのクエリから返され、変数$newestMemberとして出力します。

あなたが見ることができる私のロジックは、ユーザーのリストを取得することでしたので、SELECT *は実際のユーザーにリストを制限し、ボットなどを除外しますのでWHERE group_id <> 6です。その後、登録された日付ORDER BY user_regdateでリストをソートし、次に完全リストから1行だけDESC LIMIT 1でソートします。私はmysqlとphpのドキュメントをチェックしていますが、返された行/ユーザー名列(フィールド)から値を取得し、それをnewestMember変数として格納してページに出力する方法を理解できません。 誰かが私を正しい方向に向けることができますか?それはそのコードを少し変更する作業を得ることができた

乾杯、ジェイミー

+0

結果セットの行を_fetch_する必要があります。 ($ result = $ mysqli-> query($ result4)){ /*フェッチする場合は、次のようにしてください: – CBroe

+0

@CBroeので、ドキュメントを使用して、 '$ newestMember = $ result4-> name;オブジェクト配列*/ while($ row = $ result-> fetch_row()){ printf( "%s(%s)\ n"、$ row [0]、$ row [1]); } /*無料の結果セット*/ $ result-> close(); } ' 次のエラーが表示されます。「警告:mysqli :: query()はパラメータ1が文字列になると予想しています」というアイデアはありますか? –

+0

ここでのアイデアは、エラーメッセージを調べることです... – CBroe

答えて

0

は、SELECTクエリを前に付加し、それはそれが仕事作っmysqli->クエリを削除しました。他の誰かが同じ問題に遭遇した場合、最終的には次のようになります。適切な方向のナッジに感謝CBroe!新鮮な目を必要とし、別の角度から見てください:)

//Newest member 
$myresult = ("SELECT * FROM phpBB_users WHERE user_type <> 2 ORDER BY user_regdate DESC LIMIT 1"); 

if ($result = $mysqli->query($myresult)) { 

/* fetch object array */ 
while ($row = $result->fetch_row()) { 
     $newestMember = $row[7]; 
} 

/* free result set */ 
$result->close(); 
} 

//End of function 



//function output 
printf("Total Posts: ".$total_posts."<br/> Total Topics: ".$total_topics."<br/>Total Members: ".$total_members."<br/>Our newest member is: ".$newestMember); 
+0

これは間違った行です$ result4 = ** $ mysqli-> query **( "SELECT * FROM phpBB_users WHERE group_id <> 6 ORDER BY user_regdate DESC LIMIT 1 "); –

関連する問題