当我保存一组记录即多条记录时,如果中间的一条记录有错误(sql),会发生什么?以后所有记录都不会被插入,或只是当前行还是没有?我应该如何处理这种情况?
PDO驱动程序是Mysql
答案 0 :(得分:2)
查看PDO-Transactions:http://php.net/manual/en/pdo.begintransaction.php
您可以检查是否存在错误,如果是,则回滚您的提交或执行您想要执行的任何操作
答案 1 :(得分:2)
这些情况由database transactions管理。
经典的例子是我想把钱从我的账户转到另一个账户。有两个问题要做:
当然,如果第二个查询失败,我希望第一个查询被回滚并通知用户错误。这就是交易的目的。
如果你不使用事务,当第二个查询失败时,第一个查询仍然执行而不回滚(因此钱就会消失)。这是MySQL的默认行为。
答案 2 :(得分:1)
一般解决方案是使用TRANSACTION
(mysql) (pgsql) (mssql) 。你可以用它做什么以及你有多少控制权取决于RDBMS。例如:PostgreSQL允许您创建SAVEPOINT
,您可以ROLLBACK TO
。
另一种解决方案是使用STORED PROCEDURE
。在这种情况下,您可以指定DECLARE .. HANDLER