TRY AND ERROR

気になったこと、勉強したこと、その他雑記など色々メモしていきます。。Sometimes these posts will be written in English.,

【PHP】PDOでSQLを発行する2つの方法

PDOでクエリを実行する方法として以下の方法があります。

⑴ queryを使う
⑵ prepare後にexecuteする


具体的な使用例は以下の通り

query

$sql = 'select * from userTable';
$stmt = $dbh->query($sql); 

prepare

$sql = 'select * from userTable where id = ?';
$stmt = $dbh->prepare($sql);
$stmt->execute(array('A0001'));


prepareではプレースホルダーを利用することができ、最初にプレースホルダー付きのSQL文の解析を行います。その後、SQL文の解析をせずにパラメータだけ変えて何度も実行することができるようです。
複雑なSQL文は解析にコストがかかるため、複数回発行されるようなSQLではprepareを使うと効果的ということです。
また、prepareを使うとパラメータのエスケープを行ってくれます。

一方で、queryは一般的にパラメータを必要としないような単純なSQLを発行する際に利用するようですが、これはprepareを使ってもできるのでいまいちメリットがわかりません。。。