Ограничить второй и третий sql, если нет вставки - PullRequest
1 голос
/ 23 октября 2009

Я попал на мой php скрипт

$result1 = mysql_query("insert ignore into...this....
$result2 = mysql_query("insert into...that....
$result3 = mysql_query("insert ignore...again

это все разные запросы.

когда первый запрос пытается вставить, и если у него есть повторяющаяся запись, он не вводит это.

ну, я не хочу запускать второй и третий запрос, если первый запрос ничего не вводил.

Как запретить запуск 2 и 3 запросов, если сначала ничего не вводилось? в PHP, пожалуйста.

Спасибо

Ответы [ 3 ]

3 голосов
/ 23 октября 2009

Используйте функцию mysql_affected_rows , чтобы получить количество затронутых строк:

$result1 = mysql_query("insert ignore into...this....");
if (mysql_affected_rows($result1) > 0) {
    $result2 = mysql_query("insert into...that....");
    $result3 = mysql_query("insert ignore...again");
}
2 голосов
/ 23 октября 2009

Вы должны использовать транзакцию:

mysql_query("begin");
$result1 = mysql_query("insert ignore into...this....");
if (mysql_affected_rows() > 0) {
    $result2 = mysql_query("insert into...that....");
    $result3 = mysql_query("insert ignore...again");
    mysql_query("commit");
} else {
    mysql_query("rollback");
}

РЕДАКТИРОВАТЬ: Это будет работать, только если ваши таблицы InnoDB. Таблицы MyISAM не поддерживают транзакции.

0 голосов
/ 23 октября 2009

Я не могу попробовать это прямо сейчас, но похоже, что mysql_affered_rows () может быть в состоянии выполнить то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...