PDO のクエリと実行 質問する

PDO のクエリと実行 質問する

どちらもやり方が違うだけで、同じことを行っているのでしょうか?

prepare使用方法以外に何か違いはありますか?

$sth = $db->query("SELECT * FROM table");
$result = $sth->fetchAll();

そして

$sth = $db->prepare("SELECT * FROM table");
$sth->execute();
$result = $sth->fetchAll();

?

ベストアンサー1

queryパラメータ化されたデータなしで標準の SQL ステートメントを実行します。

execute準備されたステートメントを実行すると、パラメータをバインドして、パラメータをエスケープしたり引用符で囲んだりする必要がなくなります。executeクエリを複数回繰り返す場合もパフォーマンスが向上します。準備されたステートメントの例:

$sth = $dbh->prepare('SELECT name, colour, calories FROM fruit
    WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories);
$sth->bindParam(':colour', $colour);
$sth->execute();
// $calories or $color do not need to be escaped or quoted since the
//    data is separated from the query

ベストプラクティスは、準備されたステートメントを使用し、executeセキュリティを強化することです。

参照:PDO 準備済みステートメントは SQL インジェクションを防ぐのに十分ですか?

おすすめ記事