【发布时间】:2010-11-30 05:42:56
【问题描述】:
今天有人告诉我,我真的应该在我的应用程序中使用 PDO 和准备好的语句。虽然我了解这些好处,但我很难理解如何将它们实施到我的工作流程中。除了它使代码更干净这一事实之外,我应该有一个特定的数据库类来容纳我所有准备好的语句,还是应该在每次我想运行查询时创建一个?我发现很难理解什么时候应该使用标准 PDO 查询以及什么时候应该使用准备好的语句。任何示例、提示或教程链接将不胜感激。
【问题讨论】:
今天有人告诉我,我真的应该在我的应用程序中使用 PDO 和准备好的语句。虽然我了解这些好处,但我很难理解如何将它们实施到我的工作流程中。除了它使代码更干净这一事实之外,我应该有一个特定的数据库类来容纳我所有准备好的语句,还是应该在每次我想运行查询时创建一个?我发现很难理解什么时候应该使用标准 PDO 查询以及什么时候应该使用准备好的语句。任何示例、提示或教程链接将不胜感激。
【问题讨论】:
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();
【讨论】: