Я уже давно использую подготовленные операторы без проблем, но сегодня, когда я пытался вызвать функцию MySQL из подготовленного оператора, я получаю следующее:
Fatal error: Call to a member function fetch_array() on boolean in DB.php on line 336
Это код, который я использую, и ничто не отличается от моего обычного SELECT
, UPDATE
или же DELETE
Запросы, у меня также нет проблем с вызовом процедур, если ни одна из моих процедур не возвращает никакого значения.
$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
или.
Если у кого-то есть какие-либо предложения или идеи, с благодарностью.
Из руководства для get_result:
Возвращаемые значения
Возвращает набор результатов для успешных запросов SELECT или FALSE для других
DML-запросы или по ошибке. Функцию mysqli_errno () можно использовать для
Различают два типа неудач.
Если ваше утверждение возвращает логическое значение, это не удалось. Проверьте сообщение об ошибке от $stmt->error
и исправить все, что не так.
Других решений пока нет …