使用dbi的perl中的一个简单错误

时间:2011-05-24 12:25:32

标签: perl oracle dbi

我的准备声明中有错误

$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 "**";
}

执行语句和准备语句肯定不会失败。

[WHERE UserId = 2345]这是它失败的部分。当我在db中运行查询时它会返回值。但是当我通过脚本运行查询时它失败了(但没有编译或运行时问题)是什么问题它是在准备中我们必须给出?(绑定变量而不是实际值?) 〜 〜

2 个答案:

答案 0 :(得分:3)

使用strict,使用警告,使用DBI时,使用RaiseError。当您的SQL语句中没有占位符时,您正在使用一个绑定值执行。当然,您应该以您的方式看到错误消息(因为PrintError是默认值),但RaiseError比在任何地方洒“或死......”更容易。

答案 1 :(得分:0)

DB可能会将列名返回为大写。尝试:

$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;

我打赌它会奏效。