通过PHP启动时SQL事务无法正常工作

时间:2013-10-29 21:24:00

标签: php mysql sql transactions mysqli

我有以下查询,当它由我的PHP代码启动时不起作用:

$sql = 'START TRANSACTION;
        DELETE FROM task_actions
            WHERE task_id='.$id.';
        DELETE FROM tasks
            WHERE id='.$id.';
        COMMIT;
       ';

当我echo $sql并将输出直接输入phpMyAdmin时,它的工作没有问题;当我用两步而不是一次交易完成时,它也可以从我的PHP代码中完成。

我首先认为MySQL可能不允许进行交易,但stackoverflow.com/questions/2050310stackoverflow.com/questions/2960012表明这是错误的。

我发现我可以禁用自动提交,执行两个查询并重新激活自动提交(stackoverflow.com/a/17607619& stackoverflow.com/a/12092151),但我不愿意。

为什么它不起作用的任何想法?

1 个答案:

答案 0 :(得分:1)

$sql = 'START TRANSACTION';
// run this query
$sql = 'DELETE FROM task_actions WHERE task_id=?';
// run this query
$sql = 'DELETE FROM tasks WHERE id=?';
// run this query
$sql = 'COMMIT';
// finally run this one