ホームページ >バックエンド開発 >PHPチュートリアル >PHP で INSERT INTO を使用してプリペアド ステートメントを適切に使用するにはどうすればよいですか?

PHP で INSERT INTO を使用してプリペアド ステートメントを適切に使用するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-02 11:24:12647ブラウズ

How Can I Properly Use Prepared Statements with INSERT INTO in PHP?

INSERT INTO によるプリペアド ステートメントの組み込み

PHP: データ オブジェクトの迷宮の深さをたどると、MySQL を実行しようとすると複雑な難題が発生します。準備されたステートメントを使用したクエリ、特に INSERT INTO 操作。次のコード スニペットを考えてみましょう。

$statement = $link->prepare("INSERT INTO testtable(name, lastname, age)
        VALUES('Bob','Desaunois','18')");

$statement->execute();

指定された方法と称するものを遵守しているにもかかわらず、データベースは頑固に荒廃したままです。私たちの進歩を妨げていた欠けている要素を調べてみましょう。

INSERT INTO クエリのプリペアド ステートメントの可能性を解き放つ鍵は、パラメータ バインディングにあります。これは、パラメータへの値の安全かつ動的な統合を可能にする手法です。 SQL ステートメント。これは、クエリにプレースホルダを組み込んで、実行中に対応する値を連想配列として提供することによって実現されます。

修正されたコードを確認してください。

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

$statement->execute([
    'fname' => 'Bob',
    'sname' => 'Desaunois',
    'age' => '18',
]);

パラメータ名の存在に注意してください。 :fname'、':sname'、および ':age' (クエリ内)。これらは実際の値のプレースホルダーとして機能し、その後、execute() 関数で連想配列として提供されます。

あるいは、'?' を利用することもできます。構文をプレースホルダーとして使用し、パラメーター名を指定せずに値の配列を渡します。

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

$statement->execute(['Bob', 'Desaunois', '18']);

どちらのアプローチにも、それぞれ長所と短所があります。名前付きパラメータを使用すると可読性が向上しますが、「?」構文により、値をバインドするプロセスが簡素化されます。ただし、最終的には、どちらを選択するかは個人の好みの問題です。

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

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