PHP mysqli在foreach循环中准备的语句和事务不起作用

PHP mysqli在foreach循环中准备的语句和事务不起作用,php,mysqli,foreach,transactions,prepared-statement,Php,Mysqli,Foreach,Transactions,Prepared Statement,我目前正在使用PHP版本5.3.24的服务器上工作 在准备好的语句中使用mysqli 我正在尝试为多个查询实现事务,因此如果其中一个查询失败,所有查询都将回滚 我尽可能多地挖掘答案,但我尝试过的答案似乎都不起作用,不确定我做错了什么 代码: 本例中的循环大约有10次迭代,无论我是否将第一次设置为失败或其他任何查询都以错误的方式执行。请参阅名为Lorenzo的用户的第一个注释;这与你的问题直接相关。@Hanky웃Panky感谢您的回复,为了将其应用到准备好的声明上下文中,我应该将其放在哪里?nul

我目前正在使用PHP版本5.3.24的服务器上工作

在准备好的语句中使用mysqli

我正在尝试为多个查询实现事务,因此如果其中一个查询失败,所有查询都将回滚

我尽可能多地挖掘答案,但我尝试过的答案似乎都不起作用,不确定我做错了什么

代码:


本例中的循环大约有10次迭代,无论我是否将第一次设置为失败或其他任何查询都以错误的方式执行。

请参阅名为Lorenzo的用户的第一个注释;这与你的问题直接相关。@Hanky웃Panky感谢您的回复,为了将其应用到准备好的声明上下文中,我应该将其放在哪里?null:$all\u query\u ok=false?就在$stmt->execute;之后?没错。像这样,如果$stmt->execute{$ok==TRUE}不幸的是不起作用,那么所有其他行都会被更新,但错误的行除外。我希望您没有假设在没有更新任何内容的查询中这会失败?这仅在执行失败的查询上失败。也就是说,他们有任何错误
$mysqli->autocommit(FALSE); 

$query = "UPDATE table SET value = ? WHERE id = ?";
$stmt = $mysqli->prepare( $query );


foreach($_POST as $key => $value){
    $stmt->bind_param( 'si', $value, $key );
    $stmt->execute();       
} 

if (!$mysqli->commit()) {
    $mysqli->rollback();
    return false;
} else {
    return true;
}