ホームページ >バックエンド開発 >PHPチュートリアル >MySQLi の「bind_param()」関数が「非オブジェクト上のメンバー関数の呼び出し」エラーをスローするのはなぜですか?

MySQLi の「bind_param()」関数が「非オブジェクト上のメンバー関数の呼び出し」エラーをスローするのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-09 10:06:12703ブラウズ

Why is My MySQLi `bind_param()` Function Throwing a

Mysqli Update がメンバー関数の binding_param() 呼び出しをスローしているエラー

問題:

MySQLi が「呼び出しをスローしています」オブジェクト内の列を更新しようとすると、「非オブジェクトのメンバー関数bind_param()」エラーが発生する

原因:

bind_param() メソッドは、有効な mysqli_stmt オブジェクトに対してのみ呼び出すことができます。このエラーは、mysqli_stmt オブジェクトが適切に作成されていないために発生します。

解決策:

このエラーを解決するには:

  1. SQL クエリを確認します: prepare() メソッドの SQL クエリが次のとおりであることを確認します。構文的に正しい。
  2. try/catch で呼び出しをラップする: 例外を処理するために、prepare() 呼び出しを try/catch ブロックにカプセル化します。
  3. チェックエラー: prepare() 呼び出しを実行した後、$mysqli->error を使用してエラーを確認します。
  4. Use PDO: MySQLi の代わりに PDO (PHP Data Objects) の使用を検討してください。 PDO は、よりオブジェクト指向のインターフェイスを提供し、データベース操作を簡素化します。

PDO の例:

<?php
try {
  // Create PDO connection
  $pdo = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');

  // Prepare update statement
  $stmt = $pdo->prepare("UPDATE questionnaire SET $key = ? WHERE id = ?");

  // Bind parameters
  $stmt->bindParam(1, $value, PDO::PARAM_STR); // Set the value parameter
  $stmt->bindParam(2, $rowid, PDO::PARAM_INT); // Set the rowID parameter

  // Execute update
  $stmt->execute();
} catch (PDOException $e) {
  trigger_error($e->getMessage(), E_USER_ERROR);
}

以上がMySQLi の「bind_param()」関数が「非オブジェクト上のメンバー関数の呼び出し」エラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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