SQL查询的PDO错误检查

时间:2014-06-22 22:04:21

标签: php sql pdo

我正在尝试向代码添加更多错误输出,因为它正在增长。但我不确定我需要走多远。例如,如果我向表发送PDO DELETE FROM命令,那么我是否有必要再次查询该表以查看该行是否已被删除(并向用户确认)?或者我应该依赖于错误处理,如果没有错误,它肯定是成功的。

感谢。

1 个答案:

答案 0 :(得分:0)

您应该将每个SQL语句包装在try和catch块中,以查看是否存在任何SQL异常或任何其他异常。

根据您执行PDO查询的方式,您有两种选择。

您可以使用exec()函数直接使用PDO类执行语句。此函数将返回每个查询的受影响行数。但是,此函数不会返回SELECT查询的受影响行数。

因此,对于删除查询,您可以使用

$connection = new PDO($dsn, $username, $password);
$affectedRows = $connection->exec('DELETE from users WHERE id = 1);

这样,如果用户不存在,affectedRows可能会为1或0。如果发生任何其他错误,try-catch块的catch部分将确保获取这些错误。

如果你想执行SELECT查询并查明它是否成功,我建议你这样做

$connection = new PDO($dsn, $username, $password);
$statement = $connection->prepare(SELECT * FROM users);
$statement->execute();
$returnedUsers = $statement->fetchAll();

如您所见,调用方法$ connection-> prepare()将返回一个语句,该语句是PDOStatement类的对象。

如果在prepare查询中设置了参数,则需要通过PDOStatement类的bindParam()方法设置这些参数。

请记住,当需要一次执行多个类似查询时,请使用PDOStatement对象,然后使用bindParam()方法设置不同的参数。