Ошибка подготовленных заявлений - PullRequest
2 голосов
/ 12 ноября 2011

В процессе отладки я заметил, что скрипт умирает в строке $stmt->fetch() or die($stmt->error);. В логе PHP нет ошибок. Также это не повторяет никакой ошибки. Вы видите какой-то неправильный фрагмент кода?

$stmt = $db->prepare("SELECT e.msg_subject AS subject, e.msg_text AS text, u.fname AS firstname, u.lname AS lastname FROM emails AS e, users AS u WHERE e.msg_status=? AND e.msg_type=? AND u.id=?") or die($db->error);
    $stmt->bind_param("isi", $status, $type, $userid) or die($stmt->error);
    $stmt->execute() or die($stmt->error);
    $stmt->bind_result($subject, $text, $firstname, $lastname) or die($stmt->error);
    $stmt->fetch() or die($stmt->error);
    $stmt->close();

1 Ответ

2 голосов
/ 12 ноября 2011

Проблема в том, что $stmt->fetch() возвращает логическое значение FALSE, если оператор SQL не извлекает строки. Итак, вы должны проверить количество строк:

if ($stmt->num_rows > 0) {
    $stmt->fetch() or die($stmt->error);
}
...