ホームページ >バックエンド開発 >PHPチュートリアル >MySQLi のプリペアド ステートメントで「非オブジェクトのメンバー関数execute() の呼び出し」エラーがスローされるのはなぜですか?
mysqli でプリペアド ステートメントを使用する場合、適切な機能を確保するために特定のガイドラインに従うことが重要です。
提供されたコードでは、エラー:
Fatal error: Call to a member function execute() on a non-object in ...
は、準備されたステートメントが実行前に変数に正しくバインドされていないことを示しています。これを解決するには:
// Bind parameters to variables $name = 'one'; $age = 1; $stmt->bind_param('si', $name, $age);
Mysqli は、PHP でプリペアド ステートメントを使用する場合に適しています。これは、確立され、十分に文書化されたデータベース インターフェイスです。
<?php // Establish database connection $mysqli = new mysqli('localhost', 'root', 'root', 'test'); // Prepare statement $stmt = $mysqli->prepare('INSERT INTO users (name, age) VALUES (?, ?)'); // Bind variables $name = 'one'; $age = 2; $stmt->bind_param('si', $name, $age); // Insert data with prepared statement $stmt->execute(); // Check for errors if ($mysqli->error) { echo 'Error: ' . $mysqli->error; } else { // Data inserted successfully } // Prepare select statement $stmt = $mysqli->prepare('SELECT * FROM users WHERE name = ?'); // Bind variable $name = 'one'; $stmt->bind_param('s', $name); // Execute select query $stmt->execute(); // Fetch results $result = $stmt->get_result(); while ($row = $result->fetch_assoc()) { echo $row['id'] . ' - ' . $row['name'] . ' - ' . $row['age'] . '<br>'; } // Close statement and connection $stmt->close(); $mysqli->close(); ?>
この包括的な例では、接続の確立から、プリペアド ステートメントを使用したデータの挿入と選択までのプロセス全体を示します。エラー処理を含みます。
以上がMySQLi のプリペアド ステートメントで「非オブジェクトのメンバー関数execute() の呼び出し」エラーがスローされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。