调用MySQL函数时PHP准备语句失败

时间:2016-07-26 22:03:41

标签: php mysql prepared-statement stored-functions

我一直在使用准备好的语句,现在没有任何问题,但今天当我尝试从准备好的语句调用MySQL函数时,我得到以下内容:

Fatal error: Call to a member function fetch_array() on boolean in DB.php on line 336

这是我正在使用的代码,与我通常的SELECTUPDATEDELETE查询没什么不同,我也没有问题调用程序,没有给我任何问题程序正在返回任何值。

$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的错误消息。

如果有人有任何建议或想法,非常感谢。

1 个答案:

答案 0 :(得分:1)

来自get_result手册:

  

返回值

     

返回成功SELECT查询的结果集,或其他的FALSE   DML查询或失败。 mysqli_errno()函数可用于   区分两种类型的失败。

如果您的语句返回布尔值,则失败。检查来自$stmt->error的错误消息,并更正错误。