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