ホームページ >バックエンド開発 >PHPチュートリアル >MySQL で INSERT INTO クエリに PDO プリペアド ステートメントを適切に使用する方法

MySQL で INSERT INTO クエリに PDO プリペアド ステートメントを適切に使用する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-29 13:15:11984ブラウズ

How to Properly Use PDO Prepared Statements for INSERT INTO Queries in MySQL?

プリペアド ステートメントによる INSERT INTO を使用した PDO

PDO を使用する場合、プリペアド ステートメントによる MySQL クエリの実行は少し難しい場合があります。提示された問題を詳しく調べて、解決策を明らかにしましょう。

提供されたコードでは、INSERT INTO ステートメントは prepare() メソッドを使用して構築されています。このメソッドはステートメントを準備しますが、実行はしません。実際にクエリを実行してデータを挿入するには、execute() メソッドを呼び出す必要があります。

さらに、PDO でプリペアド ステートメントを使用する場合は、プレースホルダー (:name、:lastname など) を使用することが不可欠です。値を直接埋め込むのではなく、SQL クエリを使用します。プレースホルダーを使用すると、後で準備されたステートメントに値をバインドできます。このアプローチにより、SQL インジェクションの脆弱性が防止され、セキュリティが強化されます。

修正されたコードは次のようになります。

$dbhost = "localhost";
$dbname = "pdo";
$dbusername = "root";
$dbpassword = "845625";

$link = new PDO("mysql:host=$dbhost;dbname=$dbname", "$dbusername", "$dbpassword");
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Set error mode to exception

$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES(:name, :lastname, :age)");

$statement->bindParam(':name', 'Bob');
$statement->bindParam(':lastname', 'Desaunois');
$statement->bindParam(':age', 18);

$statement->execute();

プレースホルダーを使用し、bindParam() を使用して値をバインドすることにより、クエリが適切に実行されます。そしてデータがデータベースに挿入されます。準備されたステートメントは、SQL インジェクションを防止し、データの整合性を確保するのに役立ちます。

以上がMySQL で INSERT INTO クエリに PDO プリペアド ステートメントを適切に使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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