-2
我一直在使用准备好的语句很好,现在没有问题,但今天当我试图从准备好的语句调用MySQL函数我得到以下内容:PHP准备好的声明失败时调用MySQL函数
Fatal error: Call to a member function fetch_array() on boolean in DB.php on line 336
这是我使用的代码并没有什么不同,我平时SELECT
,UPDATE
或DELETE
querys,我也没有任何问题调用程序,我的程序授予均未返回任何值。
$sql = "SELECT FN_MAINTAIN_ASSET(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) AS assetId;";
try {
$conn = $this->open();
$stmt = $conn->prepare($sql);
if($stmt === false) {
trigger_error(sprintf($txt["error_sql"], $conn->error), E_USER_ERROR);
}
$stmt->bind_param('iiiisssbbiiiis', $modify, $type, $category, $year, $title, $description, $imageFilename, $imageMain, $imageThumbnail, $membersOnlyView, $privateView, $status, $memberId, $createdIp);
$stmt->execute();
$rs = $stmt->get_result();
$result = $rs->fetch_array(MYSQL_ASSOC); // Line 336
$rs->free();
$stmt->close();
$this->close($conn);
} catch (Exception $e) {
$logObj->error($e->getMessage());
}
$rs
只是线336,从$stmt
没有错误消息之前是空的。
如果有人有任何建议或想法,非常感谢。
在执行下一条指令之前检查'$ rs'的值 – Hackerman
您是否明确启用了异常?如果没有,那么try/catch就没用了,因为mysqi/pdo默认通过返回boolean false来失败,而不是抛出异常。要么打开异常,要么开始显式检查返回值。 –