Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Транзакции mysql и php
 
 автор: Дмитрий Смаль   (21.01.2010 в 10:23)   письмо автору
 
 

Здравствуйте!
прочитал несколько топиков на этом форуме про транзакции, но для себя ответа не нашёл
тему разместил в форуме php, так как интересует именно синтаксис php

mysql_query ("LOCK TABLES ...");
$result = mysql_query ("SELECT ..");
if (mysql_num_rows($result)!=1) функция завершается..
mysql_query("START TRANSACTION");
mysql_query ("INSERT INTO `..");
if (mysql_affected_rows()!=1) функция завершается (ROLLBACK)
$id = mysql_insert_id();
.... и потом несколько раз
mysql_query ("UPDATE ...");
if (mysql_affected_rows()!=1) функция завершается (ROLLBACK)
...
ну и в конце
mysql_query("COMMIT");
mysql_query ("UNLOCK TABLES");

вопросы:
- нужно ли в данном случае использовать mysql_query ("LOCK TABLES ...");
- правильно ли использовать if (mysql_affected_rows()!=1), я видел конструкции где используется if(!mysql_query($query);
но ведь if(!mysql_query($query); возвращает правду если запрос правильный а не если он прошел успешно?
- как узнать что запросы mysql_query ("LOCK TABLES ..."); и mysql_query("START TRANSACTION"); прошли успешно?

  Ответить  
 
 автор: Trianon   (21.01.2010 в 11:03)   письмо автору
 
   для: Дмитрий Смаль   (21.01.2010 в 10:23)
 

mysql_query возвращает значение, отличное от false, если запрос выполнен.

LOCK TABLES - инструмент не из оперы транзакций. Он как раз применяется обычно в тех случаях, когда транзакции не поддержаны. Например на таблицах MyISAM.

ROLLBACK тоже нужно вызывать через mysql_query()

тема явно из соседнего раздела.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования