mysqliの問題にどう対処するか?たとえば、mysqli_fetch_array() でエラーが発生します。パラメータ #1 は mysqli_result 型である必要があります。
P粉426906369
2023-07-24 16:47:03
<p>私のローカル/開発環境では、MySQLi クエリは正常に実行されます。ただし、Web ホスティング環境にアップロードすると、次のエラーが表示されます: </p>
<ブロック引用>
<p>致命的なエラー:...</p> 内の非オブジェクトに対するメンバー関数 binding_param() の呼び出し
</blockquote>
<p>これはコードです: </p>
<pre class="brush:php;toolbar:false;">global $mysqli;
$stmt = $mysqli->prepare("SELECT id, description FROM tbl_page_answer_category WHERE cur_own_id = ?");
$stmt->bind_param('i', $cur_id);
$stmt->execute();
$stmt->bind_result($uid, $desc);</pre>
<p>クエリを確認するために、コントロール パネルの phpMyAdmin からクエリを実行してみましたが、結果は正常でした。 </p>
###要するに###
クエリが失敗するたびに、MySQL には理由を説明するエラー メッセージが表示されます。古いバージョンの PHP では、これらのエラー メッセージは PHP に渡されず、上記のわかりにくいエラー メッセージが表示されるだけでした。したがって、MySQL エラーを報告するように PHP と mysqli を設定することが非常に重要です。エラー メッセージが表示されたら、エラーを修正できます。
MySQL でエラー情報を取得する方法 まず、すべての環境で、常に mysqli 接続の前に次のコード行を追加します。 リーリー
これ以降、すべての MySQL エラーは PHP 例外に変換されます。キャッチされない例外は、PHP の致命的なエラーの原因となります。したがって、MySQL エラーが発生すると、通常の PHP エラーが発生します。これにより、エラーの原因がすぐにわかります。また、スタック トレースにより、エラーが発生した正確な場所がわかります。表示されたエラー メッセージの処理方法
まず、問題のクエリを見つける必要があります。エラー メッセージには、エラーが発生したファイル名と行番号が含まれます。単純なコードの場合はこれで十分ですが、コードで関数またはクラスが使用されている場合は、スタックをトレースして問題のクエリを見つける必要がある場合があります。
エラー メッセージが表示されたら、それを読んで理解する必要があります。当たり前すぎるように聞こえるかもしれませんが、学習者は、エラー メッセージが単なる警告サインではなく、実際には問題の詳細な説明が含まれているという事実を見落としがちです。エラー メッセージを読んで問題を解決するだけです。テーブルが存在しないことを示すエラー メッセージが表示された場合は、スペル、タイプミス、大文字と小文字の区別をチェックする必要があります。また、PHP スクリプトが正しいデータベースに接続されていることを確認する必要があります。 エラー メッセージに SQL 構文エラーが示されている場合は、SQL ステートメントを確認する必要があります。問題は、エラー メッセージで参照されているクエリの部分の前にあるはずです。
誤った情報を信じることも必要です。エラー メッセージに、トークンの数がバインド変数の数と一致しないことが示されている場合は、それだけです。テーブルや列が欠落している場合も同様です。選択するときは、それが自分自身のせいであれ、誤った情報のせいであれ、常に前者に固執してください。繰り返しになりますが、これは傲慢に聞こえるかもしれませんが、このサイトの何百もの質問は、このアドバイスがどれほど役立つかを証明しています。
基本的なデバッグ
クエリが機能しないように見える場合は、次の 4 つの理由が考えられます。