ホームページ >バックエンド開発 >PHPチュートリアル >PHP で INSERT INTO を使用してプリペアド ステートメントを適切に使用するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。