Forum Webscript.Ru
Программирование => Perl => Тема начата: 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\' не было выполнено и соответственно апдейт не был произведен.
-
Kwazar
use SQLayer;
..............
$D->proc("UPDATE .....") or die print "bla-bla-bla";
-
commander
Я смотрю, что ты используешь SQLayer, но это же не значит, что нужно цеплять этот модуть, только для проверки одной команды... он же явно использует DBD::mysql...
Kwazar
if ($dbh->do("UPDATE ... SET ... WHERE ...") > 0) {
print "UPDATE OK!!!";
} else {
print "UPDATE FALSE!!!"
}
Исправлено условие
-
Благодарствую.
-
Phoinix
метод do() из модуля DBI возвращает количество изменённых/добавленных/удалённых записей, или 0E0, в случае если таких не было. В случае ошибки возвращается undef.
Kwazar
В твоём варианте после исполнения (execute) метод rows() вернёт количество изменённых/../.. записей.
perldoc DBI
-
ondr
метод do() из модуля DBI возвращает количество изменённых/добавленных/удалённых записей, или 0E0, в случае если таких не было. В случае ошибки возвращается undef.
Ну и??? А в чем, собственно?
Именно это и задано в условии, есть изменения или их нет...
-
Phoinix
Дело в том, что в perl 0E0 - истина
-
ondr
Спасибо, буду иметь в виду... код исправил... нужно лишь добавить > 0 в условии