Автор Тема: А был ли update (MySQL) не делай новый SQL запрос  (Прочитано 3705 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Kwazar

  • Философ
  • Постоялец
  • ***
  • Сообщений: 201
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.uhuhu.ru/
К примеру делаю такой запрос:
$sth = $dbh->prepare("update $users_table set ip=\'$ip\' where count<\'6\'");
$sth->execute || die $dbh->errstr;
$sth->finish;

Нужно ввести If, дабы делать различные действия, в зависимости от того, был ли произведен апдейт или условие where count<\'6\' не было выполнено и соответственно апдейт не был произведен.
С уважением Сергей

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
А был ли update (MySQL) не делай новый SQL запрос
« Ответ #1 : 21 Октября 2004, 15:05:43 »
Kwazar
use SQLayer;
..............

$D->proc("UPDATE .....") or die print "bla-bla-bla";
And no religion too...

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
А был ли update (MySQL) не делай новый SQL запрос
« Ответ #2 : 21 Октября 2004, 15:49:31 »
commander
Я смотрю, что ты используешь SQLayer, но это же не значит, что нужно цеплять этот модуть, только для проверки одной команды... он же явно использует DBD::mysql...

Kwazar

if ($dbh->do("UPDATE ... SET ... WHERE ...") > 0) {
 print "UPDATE OK!!!";
} else {
 print "UPDATE FALSE!!!"
}

Исправлено условие
« Последнее редактирование: 21 Октября 2004, 18:14:41 от Phoinix »

Оффлайн Kwazar

  • Философ
  • Постоялец
  • ***
  • Сообщений: 201
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.uhuhu.ru/
А был ли update (MySQL) не делай новый SQL запрос
« Ответ #3 : 21 Октября 2004, 16:30:23 »
Благодарствую.
С уважением Сергей

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
А был ли update (MySQL) не делай новый SQL запрос
« Ответ #4 : 21 Октября 2004, 17:10:46 »
Phoinix
метод do() из модуля DBI возвращает количество изменённых/добавленных/удалённых записей, или 0E0, в случае если таких не было. В случае ошибки возвращается undef.

Kwazar
В твоём варианте после исполнения (execute) метод rows() вернёт количество изменённых/../.. записей.

perldoc DBI
0 OK, 0:1

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
А был ли update (MySQL) не делай новый SQL запрос
« Ответ #5 : 21 Октября 2004, 17:51:45 »
ondr
Цитировать
метод do() из модуля DBI возвращает количество изменённых/добавленных/удалённых записей, или 0E0, в случае если таких не было. В случае ошибки возвращается undef.


Ну и??? А в чем, собственно?
Именно это и задано в условии, есть изменения или их нет...

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
А был ли update (MySQL) не делай новый SQL запрос
« Ответ #6 : 21 Октября 2004, 17:56:00 »
Phoinix
Дело в том, что в perl 0E0 - истина
0 OK, 0:1

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
А был ли update (MySQL) не делай новый SQL запрос
« Ответ #7 : 21 Октября 2004, 18:15:39 »
ondr
Спасибо, буду иметь в виду... код исправил... нужно лишь добавить > 0 в условии

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28