ホームページ >バックエンド開発 >PHPチュートリアル >MySQLi の「非オブジェクトのメンバー関数 binding_param() の呼び出し」および「mysqli_fetch_array(): 引数 #1 は mysqli_result 型である必要があります」エラーを修正する方法

MySQLi の「非オブジェクトのメンバー関数 binding_param() の呼び出し」および「mysqli_fetch_array(): 引数 #1 は mysqli_result 型である必要があります」エラーを修正する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-21 15:04:14368ブラウズ

How to Fix

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。