我已经安装了DBD::Pg版本2.17.1,但在使用下面的代码时仍然出现错误
$res = $conn->prepare($query);
$res = $res->execute();
@tuple = $res->fetchrow_array;
错误:
Can't call method "fetchrow_array" without a package or object reference at test.pl line 69.
请建议。
答案 0 :(得分:7)
$res
不是DBI
的对象实例。尝试运行ref $res
:它应该返回一个空字符串。
执行先前准备的 声明。除了UPDATE, DELETE,INSERT语句,为此 它总是返回的数量 受影响的行,execute方法可以 也可用于SELECT ... INTO表 语句。
您的$res
最有可能包含“受影响的行数”。
$sth = $conn->prepare($query);
$nrows = $sth->execute();
@tuple = $sth->fetchrow_array;
答案 1 :(得分:6)
你不应该说
$res = $res->execute();
在该语句之前的$ res是在执行成功后需要用来调用fetchrow_array的语句句柄,但是上面用execute()的返回值替换它,这是成功时受影响的行数如果执行失败,则为undef。相反,如果需要,将返回值存储在单独的变量中,并在调用fetchrow_array之前检查它是否成功。