[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: проверка выполнились ли все запросы
testr
всем привет. ситуация следующая. в скрипте например идут 2 инсерта в разные таблицы (сначала один запрос, потом другой), но если один из них не выполнится (например сервер будет перегружен), то страница будет работать некорректно.

так вот, как сделать так чтоб или они вообще не выполнялись, или выполнились все?



Спустя 11 минут, 4 секунды (22.03.2012 - 19:18) Visman написал(а):
Наверное MySQL InnoDB и использование транзакций решит проблему.

Спустя 10 минут (22.03.2012 - 19:28) Zerstoren написал(а):
Как сказал Visman, транзакции с innoDB в помощь.
Можно сделать костыль конечно. Но это проблематично.

Ввести первый инсерт, если ок, продолжаем (пишем id новой записи)
Делаем второй инсерт, не вставился? Значит делаем еще запрос на удаление прошлого инсерта.

Но это костыль, который тоже может не сработать, по этому только транзакции.

Спустя 10 минут, 30 секунд (22.03.2012 - 19:39) testr написал(а):
у меня innodb таблицы. оно автоматом когда каждый скрипт выполняется это в одну транзакцию заносит, или нужно что-то еще крутить?

Спустя 9 минут, 40 секунд (22.03.2012 - 19:48) Visman написал(а):
START TRANSACTION
- стартуем транзакцию
COMMIT
- завершаем транзакцию
Если не ошибаюсь ;)

Спустя 13 минут, 5 секунд (22.03.2012 - 20:01) testr написал(а):
ага, понял, уже читаю http://www.weblibrary.biz/mysql/sintaksis-...v-tranzakciyami

Спасибо.

Спустя 1 час, 28 минут, 27 секунд (22.03.2012 - 21:30) testr написал(а):
я не совсем понимаю, а вообще так проверять

$result = mysql_query($query);

if($result) {
//good

надежно? а то по функции mysql_query пишут

Цитата
Значение не равное FALSE говорит о том, что запрос был выполнен успешно. Он не говорит о количестве затронутых или возвращённых рядов. Вполне возможна ситуация, когда успешный запрос не затронет ни одного ряда.


не совсем понятно, значит может по нормальному запросу возвратить тру но не вставить строку?

Спустя 7 минут, 28 секунд (22.03.2012 - 21:37) testr написал(а):
Кстати mysql_affected_rows() если не ошибаюсь вернет ноль если идет апдейт на то же значение. То есть насколько я понимаю лучше всего именно проверять вернет ли mysql_query тру, так?

Спустя 2 минуты, 27 секунд (22.03.2012 - 21:40) Игорь_Vasinsky написал(а):
Цитата
Кстати mysql_affected_rows() если не ошибаюсь вернет ноль если идет апдейт на то же значение

yeep!
Цитата
То есть насколько я понимаю лучше всего именно проверять вернет ли mysql_query тру, так?

при этой ситуации false он не вернёт.
Быстрый ответ:

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