我有4个MySQL INSERT语句进入数据库的各个表,有时其中一个失败,其余的插入垃圾数据。我试图将代码转换为MySQL事务,但它执行与以前相同,没有全部或全部事务,如果特定插入没有失败,则进行所有插入。
$insert="INSERT INTO table STUFF";
//database transaction, completes all insertions or none
try {
//turn autocommit off and begin transaction
mysqli_autocommit($connection, false);
//do insert 1
$result = mysqli_query($connection,$insert);
if (!$result) {
throw new Exception('Error in Insert 1: ' . mysqli_error($connection));
}
//do insert2 3 and 4
...
//commit changes upon success
mysqli_commit($connection);
echo "records added";
} catch (Exception $e) {
//rollback upon failure
mysqli_rollback($connection);
echo "no records added";
}
答案 0 :(得分:0)
我试图解决的问题是,有时其中一个插入会失败,我不希望其他插件发生。我最终做的是重组插件,以便它们不会失败。到目前为止,我已经连续几百次插入而没有问题。
问题的根源是我对表模式的误解。