首页 > 解决方案 > 如果 4 个 mysql 查询中的任何一个失败,如何设置 mysqli 错误

问题描述

在我的数据库项目中,有一个表单,用户将在其中填写以向库存添加更多数据。我的数据库中有 4 个表。在提交表单的过程中,如果用户填写了一个已经存在的主键,则会有一个主键,mysqli_error()它会声明用户输入了无效数据。但目前我的代码行有一个顺序(请忽略这些值不是英文的)

下面的行是将数据插入到我的第一个表中,如果出现错误,它将作为错误出现

$datastok = mysqli_query($connection,"INSERT into stok (Kod_Barang, Kod_Rak, Harga, Tarikh_Jual) VALUES ('$Kod_Barang','$Kod_Rak','$Harga','$Tarikh_Jual')")or die(mysqli_error());

下面的行是将数据插入到我的第二个表中,如果出现错误,它将作为错误出现

$databarang = mysqli_query($connection,"INSERT into barang (Kod_Barang, Nama_Barang, Bil_Barang) VALUES ('$Kod_Barang','$Nama_Barang','$Bil_Barang')")or die(mysqli_error());

下面的行是将数据插入到我的第三个表中,如果出现错误,它将作为错误出现

$datalokasi = mysqli_query($connection,"INSERT into lokasi (Kod_Rak, Jenis_Barang) VALUES ('$Kod_Rak', '$Jenis_Barang')")or die(mysqli_error());

下面的行是将数据插入到我的第四个表中,如果出现错误,它将作为错误出现

$datatarikh = mysqli_query($connection,"INSERT into tarikh (Nama_Barang, Tarikh_Beli) VALUES ('$Nama_Barang', '$Tarikh_Beli')")or die(mysqli_error());

我正在努力做到这一点,所以如果任何mysqli_query()失败都不会插入。

现在发生的事情的例子:

$datastok完美运行

$databarang也完美运行

$datalokasi有一个错误,mysqli_error()将在此处停止并且$datatarikh不会运行。

所以在这种情况下,我希望如果失败,一切$datastok $databarang $datatarikh都不会执行。$datalokasi

标签: phpmysqlmysqli

解决方案


你可以使用 START TRANSACTION / COMMIT

首先从

mysqli_query($connection,"START TRANSACTION;");

然后在没有or die()的情况下运行所有​​查询

在所有查询运行后,检查其中一个是否有任何错误,

如果没有错误,则 COMMIT

mysqli_query($connection,"COMMIT;");

如果有错误,那么 ROLLBACK

mysqli_query($connection,"ROLLBACK;");

推荐阅读