Това означава, че имате нужда от транзакция .
Транзакцията е набор от заявки, които или всички се изпълняват добре, или ако една се провали - всички се провалят. Това е, за да се гарантира, че няма да се окажете с глупави данни във вашите таблици.
Не
- Не използвайте множество заявки.
- Не използвайте
mysql_*
функция(и). - Не използвайте насипни вложки.
Хората, които ви казват да направите това, просто нямат абсолютно никаква представа какво правят, игнорирайте ги.
Направете
- Използвайте PDO
- Използвайте подготвени отчети
- Подгответе изявлението(ите) ВЕДНЪЖ, използвайте ги НЯКОЛКО пъти
Примерен код - НЕ копирайте и поставяйте
$dsn = 'mysql:dbname=testdb;host=127.0.0.1;charset=utf8mb4';
$user = 'dbuser';
$password = 'dbpass';
$pdo = new PDO($dsn, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$insert['first'] = $pdo->prepare("INSERT INTO table SET col1 = :val, col2 = :val2");
$insert['second'] = $pdo->prepare("INSERT INTO another_table SET col1 = :val, col2 = :val2");
$pdo->beginTransaction();
$insert['first']->bindValue(':val', 'your value');
$insert['first']->bindValue(':val2', 'anothervalue');
$insert['first']->execute();
$insert['second']->bindValue(':val', 'your value');
$insert['second']->bindValue(':val2', 'anothervalue');
$insert['second']->execute();
$pdo->commit();
Кодът по-горе ще запази данните в две таблици САМО ако и двете вмъквания са успешни.