プリペアドステートメント | ポケモン好きなWEBエンジニアの日記
【プリペアドステートメント】

実行したい SQL をコンパイルした 一種のテンプレートのようなものです。パラメータ変数を使用することで SQL をカスタマイズすることが可能です。プリペアドステートメントには 2 つの大きな利点があります。

・クエリのパース (あるいは準備) が必要なのは最初の一回だけで、 同じパラメータ (あるいは別のパラメータ) を指定して何度でも クエリを実行することができます。クエリを実行するには、準備として クエリの解析やコンパイル、そして実行プランの最適化が行われます。 クエリが複雑になると、この処理には時間がかかるようになります。 同じクエリを異なったパラメータで何度も実行すると、アプリケーションの 動作は目に見えて遅くなるでしょう。 プリペアドステートメントを使用すると、この 解析/コンパイル/最適化 の繰り返しを避けることができます。 端的に言うと、プリペアドステートメントは使用するリソースが少なくいため 高速に動作するということです。


・プリペアドステートメントに渡すパラメータは、引用符で括る必要は ありません。それはドライバが自動的に行います。 アプリケーションで明示的にプリペアドステートメントを使用するように すれば、SQL インジェクションは決して発生しません (しかし、もし信頼できない入力をもとにクエリの他の部分を構築している のならば、その部分に対するリスクを負うことになります)。


引用URL : http://jp.php.net/manual/ja/pdo.prepared-statements.php

例えば、

select * from user where age=10;
select * from user where age=15;
select * from user where age=20;
select * from user where age=25;
select * from user where age=30;
select * from user where age=35;

・・・というクエリを実行する「select * from user where age=」という共通の部分を何回も解析しなければならない。
そこでプリペアドステートメントを用いることで、1回の解析ですむようになる。

select * from user where age=?;

そうすることで実行処理が多少早くなる。
Webサイトにおける「数秒」はユーザビリティ、アクセシビリティへの影響も大きい。

ひとこと
「今は、PEAR MDB2を触っています。」