我已经安装了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.
请建议。
$res
不是 的对象实例DBI
。尝试运行ref $res
:它应该返回一个空字符串。
执行先前准备好的语句。除了 UPDATE、DELETE、INSERT 语句,它总是返回受影响的行数,execute 方法也可用于 SELECT ... INTO 表语句。
您$res
最有可能包含“受影响的行”的数量。
$sth = $conn->prepare($query);
$nrows = $sth->execute();
@tuple = $sth->fetchrow_array;
你不应该说
$res = $res->execute();
该语句之前的 $res 是执行成功后您将需要用于调用 fetchrow_array 的语句句柄,但上面将其替换为 execute() 的返回值,即成功时受影响的行数或 undef if执行失败。相反,如果需要,将该返回值存储在一个单独的变量中,并在调用 fetchrow_array 之前检查它是否成功。