Простая ошибка в Perl с использованием dbi - PullRequest
3 голосов
/ 24 мая 2011

У меня есть ошибка в моем операторе prepare

$sqlst = $dbh->prepare('SELECT * FROM starter_trot WHERE UserId = 2345' ) or die "Couldn't prepare statement: " . $dbh->errstr;
$sqlst->execute($userid) or die "Couldn't execute statement: " . $sqlst->errstr;
my @data;
print"hai";
while (@data = $sqlst->fetchrow_array())
{
print "**";
}

инструкция execute и инструкция prepare не завершается с ошибкой.

[WHERE UserId = 2345] Это часть, в которой он не выполняется.когда я запускаю запрос в БД, он переустанавливает значения. Но когда я запускаю запрос с помощью сценариев, он терпит неудачу (но нет проблем с компиляцией или во время выполнения), в чем проблема.фактические значения?) ~ ~

Ответы [ 2 ]

3 голосов
/ 24 мая 2011

используйте строгий, используйте предупреждения, а при использовании DBI используйте RaiseError. Вы выполняете с одним значением связывания, когда в вашем операторе SQL нет заполнителей. Конечно, вы должны видеть сообщение об ошибке так, как оно есть (поскольку PrintError является значением по умолчанию), но RaiseError проще, чем разбрызгивать 'or die ...' везде.

0 голосов
/ 24 мая 2011

БД, скорее всего, возвращает имя столбца в верхнем регистре. Попробуйте:

$sqlst = $dbh->prepare('SELECT * FROM starter_trot WHERE USERID = 2345' ) or        die "Couldn't prepare statement: " . $dbh->errstr;
$sqlst->execute($userid) or die "Couldn't execute statement: " . $sqlst->errstr;

и держу пари, что это сработает.

...