Forum Webscript.Ru

Программирование => Perl => Тема начата: Kwazar от 21 Октября 2004, 15:00:46

Название: А был ли update (MySQL) не делай новый SQL запрос
Отправлено: Kwazar от 21 Октября 2004, 15:00:46
К примеру делаю такой запрос:
$sth = $dbh->prepare("update $users_table set ip=\'$ip\' where count<\'6\'");
$sth->execute || die $dbh->errstr;
$sth->finish;

Нужно ввести If, дабы делать различные действия, в зависимости от того, был ли произведен апдейт или условие where count<\'6\' не было выполнено и соответственно апдейт не был произведен.
Название: А был ли update (MySQL) не делай новый SQL запрос
Отправлено: commander от 21 Октября 2004, 15:05:43
Kwazar
use SQLayer;
..............

$D->proc("UPDATE .....") or die print "bla-bla-bla";
Название: А был ли update (MySQL) не делай новый SQL запрос
Отправлено: Phoinix от 21 Октября 2004, 15:49:31
commander
Я смотрю, что ты используешь SQLayer, но это же не значит, что нужно цеплять этот модуть, только для проверки одной команды... он же явно использует DBD::mysql...

Kwazar

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

Исправлено условие
Название: А был ли update (MySQL) не делай новый SQL запрос
Отправлено: Kwazar от 21 Октября 2004, 16:30:23
Благодарствую.
Название: А был ли update (MySQL) не делай новый SQL запрос
Отправлено: ondr от 21 Октября 2004, 17:10:46
Phoinix
метод do() из модуля DBI возвращает количество изменённых/добавленных/удалённых записей, или 0E0, в случае если таких не было. В случае ошибки возвращается undef.

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

perldoc DBI
Название: А был ли update (MySQL) не делай новый SQL запрос
Отправлено: Phoinix от 21 Октября 2004, 17:51:45
ondr
Цитировать
метод do() из модуля DBI возвращает количество изменённых/добавленных/удалённых записей, или 0E0, в случае если таких не было. В случае ошибки возвращается undef.


Ну и??? А в чем, собственно?
Именно это и задано в условии, есть изменения или их нет...
Название: А был ли update (MySQL) не делай новый SQL запрос
Отправлено: ondr от 21 Октября 2004, 17:56:00
Phoinix
Дело в том, что в perl 0E0 - истина
Название: А был ли update (MySQL) не делай новый SQL запрос
Отправлено: Phoinix от 21 Октября 2004, 18:15:39
ondr
Спасибо, буду иметь в виду... код исправил... нужно лишь добавить > 0 в условии