[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как объединить запросы
vodolei2150
У меня много запросов к базе данных для одной операци. Если один запрос пройдет, а второй нет в данных возникнет несоответствие.
Как правильно объединить запросы, что бы невыполнение одного не отражалось на другом?
Приведите хоть один пример запроса пожалуйста!



$result1 = mysqli_query(mysqlconnect(), "UPDATE users SET balance=10 WHERE user_id='$id'");
if($result1) {
$result2 = mysqli_query(mysqlconnect(), "UPDATE orders SET status=0 WHERE num_order='$order'");
}



как сделать что бы если выполнился первый, а второй не выполнился, первый тоже не выполнялся?
sergeiss
Цитата (vodolei2150 @ 9.02.2015 - 22:39)
как сделать что бы если выполнился первый, а второй не выполнился, первый тоже не выполнялся?

Есть такое понятие "транзакция". Это набор команд в SQL, которые как раз или выполняются все, или не выполняется ни одна. То есть это то, что тебе нужно.

Гугли по словам "mysql транзакция".

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Zzepish
угум. и innodb
inpost
vodolei2150
$mysqli = new mysqli(...); 
try {
$mysqli->begin_transaction();
$mysqli->query("UPDATE `users` SET `money` = `money` + 100 WHERE `id` = 1");
$mysqli->query("INSERT INTO `logs` SET `user_id` = 1, `money` = 100, `comments` = 'бонусы за переход по ссылке'");
$mysqli->commit();
} catch (Exception $e) {
$mysqli->rollback();
}

Код взят отсюда: http://school-php.com/blog/read/4/mysqli-b...%86%D0%B8%D0%B8

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.