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

PHP/PDO:使用带有查询返回/受影响行的简单预处理语句?,php,mysql,pdo,prepared-statement,Php,Mysql,Pdo,Prepared Statement,我是PDO对象的新手,找不到一份对我有帮助的文档。假设我有一个简单的代码来删除一行: $count = $dbh->exec("DELETE FROM fruit WHERE colour = 'red'"); 这将返回受影响的行,但如何使用准备好的语句?可以使用$dbh->prepare和$dbh->exec或query $dbh->prepare返回一个PDOStatement对象。然后调用$stmt->execute以获得结果 以下是手册中的一个示例: <?php /* E

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

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

这将返回受影响的行,但如何使用准备好的语句?可以使用
$dbh->prepare
$dbh->exec
或query

$dbh->prepare
返回一个
PDOStatement
对象。然后调用
$stmt->execute
以获得结果

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

<?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));
?>

它应该与任何其他语句相同:

$stmt = $dbh->prepare("DELETE FROM fruit WHERE colour = ?");
$stmt->execute(array('red'));
$count = $stmt->rowCount();
这应该是你想要做的

编辑


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

上找到,但我如何返回受影响的行数?我可以像我的示例中那样使用它吗,
$count=$stmt->execute
?编辑:其他人回答了。所以执行也可以返回受影响的行,这正是我需要的。非常感谢。不,我以前有个错误。手册中指出,
->execute
返回bool,但是看看手册中的其他函数,
->rowCount()
将提供计数。这将非常适合我的代码,并且最终使用
->rowCount()
函数更有意义。再次感谢。