ホームページ >バックエンド開発 >PHPチュートリアル >MySQLi の「非オブジェクトのメンバー関数 binding_param() の呼び出し」および「mysqli_fetch_array(): 引数 #1 は mysqli_result 型である必要があります」エラーを修正する方法
MySQLi エラーの伝播: mysqli_fetch_array() および Bind_param() の問題の解決
問題:
「メンバーに電話をかける」などのエラー特定の環境で MySQLi を使用する場合、「非オブジェクトに対する関数bind_param()」および「mysqli_fetch_array(): 引数 #1 は mysqli_result 型である必要があります」が発生することがあります。この問題は通常、PHP での MySQL エラー報告の設定が不足していることが原因で発生します。
解決方法:
1. MySQL エラー レポートを有効にする
まず、MySQLi 接続を確立する前に次の行を追加して、PHP で MySQL エラー レポートを有効にします。
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
この設定により、MySQL エラーがすべて確実に検出されます。 PHP 例外として伝播され、表示され、実行可能になります。
2.プリペアド ステートメントの利用
SQL クエリ内の明示的な PHP 変数を疑問符に置き換え、プリペアド ステートメントを使用してクエリを実行します。このアプローチは、構文エラーやインジェクションの脆弱性を防ぐのに役立ちます。
// Example using MySQLi prepared statements $mysqli = new mysqli(...) or throw new Exception('Could not connect to DB'); $query = 'SELECT id, description FROM tbl_page_answer_category WHERE cur_own_id = ?'; $stmt = $mysqli->prepare($query); $stmt->bind_param('i', $cur_id); $stmt->execute(); $stmt->bind_result($uid, $desc);
追加のヒント
以上がMySQLi の「非オブジェクトのメンバー関数 binding_param() の呼び出し」および「mysqli_fetch_array(): 引数 #1 は mysqli_result 型である必要があります」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。