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