PHP / PDO:使用简单的预处理语句与查询返回/受影响的行?

时间:2010-09-07 15:08:35

标签: php mysql pdo prepared-statement

我是PDO对象的新手,无法找到对我有帮助的单一文档。假设我有一个简单的代码来删除一行:

$count = $dbh->exec("DELETE FROM fruit WHERE colour = 'red'");

那会返回受影响的行,但是我如何使用预备语句?可以使用$dbh->prepare AND $dbh->exec或查询!?

2 个答案:

答案 0 :(得分:12)

它应该与任何其他声明相同:

$stmt = $dbh->prepare("DELETE FROM fruit WHERE colour = ?");
$stmt->execute(array('red'));
$count = $stmt->rowCount();

PDO Statement rowCount()应该是你想要做的。

修改

通过添加将返回行计数的->rowCount()来修复。无论查询是否出错,语句中的->execute都会返回booltruefalse。当然,所有这些信息都可以在PDO Statement Manual

上找到

答案 1 :(得分:1)

$dbh->prepare会返回PDOStatement个对象。然后,您可以致电$stmt->execute以获得结果。

More info in the PDO manual

以下是手册中的一个示例:

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