1. ホーム
  2. php

[解決済み] "booleanのメンバ関数fetch_assoc()の呼び出し" [重複] [重複

2022-02-18 19:30:03

質問

このエラーに関する質問をたくさん見ましたが、どれも私の問題を解決してくれるような答えはなかったようです...。もし見逃していたらすみません。

私のスクリプトは、次のようなエラーを出し続けています。

メンバ関数 fetch_assoc() の呼び出しが boolean である。

とありますが、このようなことはないでしょう。

どちらも $mysqli_query$mysqli_query->fetch_assoc() はオブジェクトです。それらはそれぞれ

object(mysqli_result)#4 (5) {
["current_field"]=>
  int(0)
["field_count"]=>
  int(2)
["lengths"]=>
  NULL
["num_rows"]=>
  int(1)
["type"]=>
  int(0)
}

そして

array(2) {
["date"]=>
  string(10) "2016-11-19"
["roles"]=>
  string(241) "{"eu":{"host":{"max":2,"0":"U0SEMUG8L"},"chat":{"max":1,"0":"U0SEMUG8L"},"bg":{"max":2,"0":"U0SEMUG8L"}},"us":{"host":{"max":2,"0":"U0SEMUG8L","1":"U0SEMUG8L","2":"U0SEMUG8L"},"chat":{"max":1,"0":"U0SEMUG8L","1":"U0SEMUG8L"},"bg":{"max":2}}}"
}

これらも同じエラーになります。

SELECT * FROM `hosting_signups`
SELECT * FROM `hosting_signups` WHERE 1

PhpMyAdminで以下を実行すると、正常に動作します。

SELECT * FROM `hosting_signups` WHERE `date`='2016-11-19'

何が間違っているのか、どなたかご存知でしょうか?以下は関連するコードです。

$mysqli_cmd = "SELECT * FROM `hosting_signups` WHERE `date`='" . $next_karaoke->format("Y-m-d") . "'";
$mysqli_query = $mysqli->query($mysqli_cmd);
//var_dump($mysqli_query->fetch_assoc()); // Oddly, when uncommented this terminates the 
                                          // whole while loop below, and the error is not 
                                          // produced but my code inside does not run. I'm 
                                          // not sure if this is at all related to my problem.

while($row = $mysqli_query->fetch_assoc()) {}

EDITです。 もう少しデバッグをしながら、コードを少し修正したのですが、どうでしょう。

$mysqli_cmd = "SELECT * FROM `hosting_signups` WHERE `date`='" . $next_karaoke->format("Y-m-d") . "'";
$mysqli_query = $mysqli->query($mysqli_cmd);

var_dump($mysqli_cmd);
var_dump($mysqli->error);

while($row = $mysqli_query->fetch_assoc()) {}

と出力されます。

string(57) "SELECT * FROM `hosting_signups` WHERE `date`='2016-11-19'"
string(0) ""
Fatal error:  Call to a member function fetch_assoc() on boolean in 
/home2/bugfroggy/public_html/hosting_signup.php on line 63

EDIT 2: 私の愚かなミスです。私は誤って $mysqli_query の中で while のクエリ変数の代わりにループを使用します。 別の のクエリをループ内で行っていました。問題は解決しました。

どのように解決するのですか?

私の愚かなミスです。私は誤って $mysqli_query の中で while のクエリ変数の代わりにループを使用します。 別の のクエリをループ内で行っていました。