PHP中的事务;不起作用


Transaction in PHP doesn't work

我有两个表,OrderDish,我需要创建一个事务,以确保菜肴同时按顺序插入。我如何在这里申请交易?

我已经做到了:

foreach($options as $name)
{
        $nomeA = $name;
        $sql = "INSERT INTO Order VALUES ('$email',$nEnc,'$nomeA');";
        echo("<p>$sql</p>");
};
$tot_sql = "start transaction;".$sql."rollback;";
$db->query($tot_sql);

但我认为它不起作用,因为$sql将更改并覆盖以前的查询。

使用.=附加到字符串:

$sql = '';
foreach ($options as $name) {
    $sql1 = "INSERT INTO Order VALUES ('$email', $nEnc, '$name');";
    echo "<p>$sql1</p>";
    $sql .= $sql1;
}
$tot_sql = "start transaction;".$sql."rollback;";
$db->query($tot_sql);

您还可以在具有多个VALUES列表的单个语句中执行所有插入操作。

$values = array();
foreach($options as $name) {
    $values[] = "('$email', $nEnc, '$name')";
}
if (count($values)) {
    $values_string = implode(',', $values);
    $sql = "start transaction;INSERT INTO Order VALUES $values_string;rollback;";
    $db->query($sql);
}

订单也是一个保留字,使用回溯

`order`

使用

$sql='';
foreach($options as $name)
{
        $nomeA = $name;
        $sql .= "INSERT INTO Order VALUES ('$email',$nEnc,'$nomeA');";
        echo("<p>$sql</p>");
};
$tot_sql = "start transaction;".$sql."rollback;";
$db->query($tot_sql);