【ぷりぺあどすてーとめんと】
プリペアドステートメント とは?
最終更新:
💡 SQLの命令と、検索する値を分けて渡す
SQL文のテンプレートを準備し、実行時の値をパラメータとして渡す仕組み。命令と値を分けることでSQLインジェクションを防ぎ、処理の再利用にも役立つ。
📌 このページのポイント
何を準備してるの?
それでSQLインジェクションを防げるの?
テーブル名も ? にできる?
同じ文を使えば、必ず速くなる?
解析などの繰り返しを減らせるけれど、必ず速くなるとは限らないよ。PostgreSQLは値に応じた計画を作る場合もあり、計画の作成が常に1回という説明はできない。PDOにはクライアント側で準備を模倣する実装もあるので、DBやDB接続用ライブラリの動作を確認するんだ。
ORMを使っていたら大丈夫?
まとめ:ざっくりこれだけ覚えればOK!
「プリペアドステートメント」って出てきたら「SQLの命令と値を分けて実行する仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Prepared Statement」 = 事前に準備された文
💬 Prepared(準備された)Statement(文)で、SQL文をあらかじめ準備しておくという意味だよ