web-dev-qa-db-ja.com

PHP PDOの準備済みステートメント

私は今日、本当にアプリケーションでPDOと準備されたステートメントを使用すべきであると言われました。メリットを理解する一方で、ワークフローにどのように実装するかを理解するのに苦労しています。コードがよりクリーンになるという事実は別として、準備されたすべてのステートメントを格納する特定のデータベースクラスが必要ですか、それともクエリを実行するたびに作成する必要がありますか?標準のPDOクエリを使用する必要がある場合と、準備されたステートメントを使用する必要がある場合を理解するのは非常に困難です。例、ヒント、またはチュートリアルのリンクは大歓迎です。

31
Hanpan

pdo :: prepare() のドキュメントには2つの優れた例があります。

ここに含めて、少し簡略化しました。

これは? パラメーター。 $dbhは基本的にPDOオブジェクトです。そして、あなたがしていることは値を置くことです150および'red'最初の疑問符と2番目の疑問符にそれぞれ。

/* Execute a prepared statement by passing an array of values */
$sth = $dbh->prepare('SELECT name, colour, calories
                      FROM fruit
                      WHERE calories < ? AND colour = ?');

$sth->execute(array(150, 'red'));

$red = $sth->fetchAll();

これは名前付きパラメーターを使用し、もう少し複雑です。

/* Execute a prepared statement by passing an array of values */
$sql = 'SELECT name, colour, calories
        FROM fruit
        WHERE calories < :calories AND colour = :colour';

$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':calories' => 150, ':colour' => 'red'));

$red = $sth->fetchAll();
32
Ólafur Waage