私は約3時間を探していますが、多くの人が同様のエラーを抱えていますが、回答が見つかりませんこの問題をまだ解決する方法について。私は "あなたの質問は偽を返しているに違いない"と言っている人からのたくさんの反応を見るが、それは助けにならない。私は約1週間ほどmysqlとphpを使用していたので、私は非常に素人です。PHPとMYSQL致命的なエラー:booleanのメンバー関数fetch_assoc()を呼び出す
$ count変数を目的のために入れて、正しい数の行を返すかどうかを確認しますが、whileループはエラーを返します。それは私のテーブルには現在2行があります。合計3つの列(id、User1、User2)もあります。
複数の行を配列に格納する方法についてGoogle検索をした後、fetch_assoc()は一度に1行しか返さないため、すべての応答ではwhileループを使用すると言います。
このコードを修正する方法や、mysql検索の複数の行を配列に読み込むためにどのようなコードを使用できるか教えてもらえますか?
$i = 0;
$stmt1 = $this->conn->prepare("SELECT * FROM friends WHERE User1 = ? OR User2 = ?");
$stmt1->bind_param("ss", $myuid, $myuid);
if ($stmt1->execute()) {
$stmt1->store_result();
$count = $stmt1->num_rows;
while(($row = $stmt1->get_result()->fetch_assoc()) !== FALSE){
if ($row['User1'] == $myuid) {
$friends[$i]= $row['User2'];
$i++;
} else if ($row['User2'] == $myuid){
$friends[$i] = $row['User1'];
$i++;
}
}
$stmt1->close();
あなたはプリペアドステートメントを使用しているので、私は 'あなたが結果をバインドし、'しばらく($ stmt->()をフェッチ)を使用したいと思います。フレンドテーブルにはいくつの列がありますか?あなたが*を使用する代わりにそれらをリストアップしない理由はありますか? ' –
'!== FALSE'のようにしないでください。これらの関数は、論理的に真である値を返すように設計されています。あなたが厄介な状況に陥っていることを知っている場合にのみ、その重い尺度を採用してください。また、 'get_result()'は、あなたが実際に動かすことのできる値を返すと仮定しています。 – tadman
合計3つの列があります。私はそれらを列挙することができますが、このコードでは違いはありません。 – MildewMan