Как установить ошибку MySQL в случае сбоя любого из 4 запросов MySQL - PullRequest
0 голосов
/ 30 марта 2019

В моем проекте базы данных есть форма, где пользователь будет заполнять, чтобы добавить больше данных в запас. У меня есть 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 не удалось.

1 Ответ

1 голос
/ 30 марта 2019

вы можете использовать START TRANSACTION / COMMIT

первый запуск с

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

и затем запустите все свои квесты без the или die ()

после выполнения всех запросов проверьте, нет ли ошибок в одном из них,

если нет ошибок, тогда COMMIT

mysqli_query($connection,"COMMIT;");

если есть ошибки, ROLLBACK

mysqli_query($connection,"ROLLBACK;");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...