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

调用MySQL函数时PHP准备语句失败,php,mysql,prepared-statement,stored-functions,Php,Mysql,Prepared Statement,Stored Functions,我使用prepared语句已经有一段时间了,现在没有任何问题,但今天,当我尝试从prepared语句调用MySQL函数时,我得到了以下结果: Fatal error: Call to a member function fetch_array() on boolean in DB.php on line 336 这是我正在使用的代码,与我通常使用的选择、更新或删除查询没有什么不同,我调用过程也没有问题,即使我的过程都没有返回任何值 $sql = "SELECT FN_MAINTAIN_ASSE

我使用prepared语句已经有一段时间了,现在没有任何问题,但今天,当我尝试从prepared语句调用MySQL函数时,我得到了以下结果:

Fatal error: Call to a member function fetch_array() on boolean in DB.php on line 336
这是我正在使用的代码,与我通常使用的
选择
更新
删除
查询没有什么不同,我调用过程也没有问题,即使我的过程都没有返回任何值

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


如果任何人有任何建议或想法,我们将不胜感激。

从手册中获取结果:

返回值

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


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

在执行下一条指令之前,请检查
$rs
的值是否明确启用异常?如果不是,那么try/catch就没用了,因为mysqi/pdo通过返回布尔值false而默认失败,而不是抛出异常。要么启用异常,要么开始显式检查返回值。