ホームページ >データベース >mysql チュートリアル >mysqli のプリペアド ステートメントで「非オブジェクトのメンバー関数execute() の呼び出し」が発生するのはなぜですか?

mysqli のプリペアド ステートメントで「非オブジェクトのメンバー関数execute() の呼び出し」が発生するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-15 01:30:11266ブラウズ

Why Am I Getting

Mysqli プリペアド ステートメントについて

プリペアド ステートメントは、SQL インジェクションの脆弱性を防ぐための重要な実践です。ただし、mysqli プリペアド ステートメントを使用するときに発生する一般的なエラーは、「非オブジェクトのメンバー関数execute() を呼び出します。」というエラーを受け取ることです。

この問題を解決し、mysqli プリペアド ステートメントを効果的に使用するには、次のようにします。次の内容を理解する必要があります:

  1. パラメータ バインディング: ステートメントを準備した後、パラメータをSQL クエリ内のプレースホルダー (?)。これは、bind_param() メソッドを使用して行われます。
  2. 実行: パラメーターがバインドされたら、execute() メソッドを使用して準備されたステートメントを実行できます。

完全なプロセスを示す例は次のとおりです:

<?php

// Connect to MySQL
$mysqli = new mysqli("localhost", "root", "root", "test");

// Prepare statement
$stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?, ?)");

// Bind parameters
$name = 'one';
$age = 1;
$stmt->bind_param('si', $name, $age);

// Execute statement
$stmt->execute();

// Insert another row with different values
$name = 'two';
$age = 2;
$stmt->bind_param('si', $name, $age);
$stmt->execute();

?>

準備されたステートメントに mysqli を使用するこれは、PHP で SQL インジェクションから保護するための推奨される方法であるため、強くお勧めします。上記の例では、接続、挿入、選択だけでなく、エラー処理も提供しています。

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

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