我的准备声明中有错误
$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中运行查询时它会返回值。但是当我通过脚本运行查询时它失败了(但没有编译或运行时问题)是什么问题它是在准备中我们必须给出?(绑定变量而不是实际值?) 〜 〜
答案 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;
我打赌它会奏效。