PHP/PDO:使用带有查询返回/受影响行的简单预处理语句?
我是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
$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()
函数更有意义。再次感谢。