我的php网站上有一些SQL查询,我一个接一个地执行。
我想过实现事务就像一个失败然后不再继续插入其余部分。
然而,在我的代码中执行事务后,我发现插入不再发生。
有人能指出我哪里出错了,以及如何解决我所面临的问题?
$db = getConnection();
try{
/* Begin a transaction, turning off autocommit */
$db->beginTransaction();
$stmt = $db->prepare('INSERT INTO Orders VALUES(\'\', :ref, :date, :aid, 1)');
$stmt->bindParam(':ref', $referenceCode);
$stmt->bindParam(':date', $date);
$stmt->bindParam(':aid', $agentId);
$stmt->execute();
$stmt = $db->prepare('UPDATE Agents SET Agent_OrderCount = :cow WHERE Agent_Id = :aid');
$stmt->bindParam(':cow', $counter);
$stmt->bindParam(':aid', $agentId);
$stmt->execute();
$db->commit();
sendResponse(200, '{"Error":"0", "Message":"Successfully created order"}');
return;
}
catch(PDOException $e){
/* Recognize mistake and roll back changes */
$db->rollBack();
sendResponse(400, '{"Error":"3002", "Message":"'. $e->getMessage() .'"}');
return;
}
在插入交易代码之前,我可以向您保证所有插入查询都运行良好。
答案 0 :(得分:0)
有人能说出我出错的地方
不确定。
您在Stackoverflow上询问此问题而不是询问您的服务器
在创建PDO连接后设置此属性
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
然后再次运行您的代码
人类不打算运行代码。是的,我们可以发现一些错误。但是有一个问题:您发布的代码中没有错误,但在其他地方。所以,只是看代码没什么意义。代码必须运行。并且必须设置错误报告。所以,你自己的服务器会告诉你出了什么问题,这个帮助比那些花一点时间来消化代码的人更可靠。