1

我已经安装了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.

请建议。

4

2 回答 2

7

$res不是 的对象实例DBI。尝试运行ref $res:它应该返回一个空字符串。

执行先前准备好的语句。除了 UPDATE、DELETE、INSERT 语句,它总是返回受影响的行数,execute 方法也可用于 SELECT ... INTO 表语句。

$res最有可能包含“受影响的行”的数量。

$sth   = $conn->prepare($query);
$nrows = $sth->execute();
@tuple = $sth->fetchrow_array;
于 2010-10-25T06:39:35.113 回答
6

你不应该说

$res = $res->execute();

该语句之前的 $res 是执行成功后您将需要用于调用 fetchrow_array 的语句句柄,但上面将其替换为 execute() 的返回值,即成功时受影响的行数或 undef if执行失败。相反,如果需要,将该返回值存储在一个单独的变量中,并在调用 fetchrow_array 之前检查它是否成功。

于 2010-10-25T06:48:24.213 回答