2016-07-26 2 views
-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 либо.

Если у кого есть предложения или идеи, очень благодарен.

+0

Проверьте значение '$ rs' перед выполнением следующей инструкции – Hackerman

+1

Вы явно включили исключения? Если нет, попытка try/catch бесполезна, потому что mysqi/pdo по умолчанию отказывается, возвращая логическое значение false, а не исключая исключения. либо включить исключения, либо начать явно проверять возвращаемые значения. –

ответ

1

Из инструкции для get_result:

Возвращаемые значения

Возвращает Resultset для успешных запросов SELECT, или FALSE для других DML запросов или в случае неудачи. Функция mysqli_errno() может использоваться для различать два типа сбоев.

Если ваше утверждение возвращает логическое значение, оно не сработало. Проверьте сообщение об ошибке от $stmt->error и исправьте, что не так.

 Смежные вопросы

  • Нет связанных вопросов^_^