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

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

Linda Hamilton
リリース: 2024-11-29 13:15:11
オリジナル
1054 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート