一尘不染

PHP PDO准备的语句

mysql

今天有人告诉我,我确实应该在应用程序中使用PDO和准备好的语句。在我了解好处的同时,我也在努力了解如何将其实现到我的工作流程中。除了它使代码更简洁外,我是否应该有一个特定的数据库类来容纳所有准备好的语句,还是应该在每次运行查询时都创建一个?我发现很难理解何时应使用标准PDO查询以及何时应使用准备好的语句。任何示例,技巧或教程链接将不胜感激。


阅读 322

收藏
2020-05-17

共1个答案

一尘不染

pdo :: prepare()文档上有两个很好的例子。

我将它们包括在这里,并简化了它们。

这个使用?参数。$dbh基本上是一个PDO对象。而您正在做的是分别将值150'red'放入第一个和第二个问号。

/* 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();
2020-05-17