Подтвердить что ты не робот

Когда закрыть подготовленное выражение

Когда закрывать подготовленные инструкции в PHP?

Пример:

    $query = "insert into web_reviews (title,added_date,reviewer_home_url,read_more_link,summary) values(?,?,?,?,?)";
    $stmt = $this->db->prepare($query);
    $stmt->bind_params($this->title,$this->added_date,$this->reviewer_home_url,$this->read_more,$this->summary);
    $stmt->execute() or die("Cannot add the date to the database, please try again.");
    $stmt->close();

    $stmt = $this->db->prepare("select id from web_reviews where title = ? and read_more = ?");
    $stmt->bind_params($this->title,$this->read_more);
    $stmt->execute();
    $stmt->bind_results($web_review_id);
    $stmt->close();

Должен ли я использовать $stmt->close(); здесь?

Edit:

Что написано в Руководстве по PHP, а также один комментарий из руководства говорит:

Закрывает подготовленное выражение. mysqli_stmt_close() также освобождает инструкция описана. Если текущий выражение ожидает или не прочитано результаты, эта функция отменяет их что следующий запрос может быть выполнен.

Комментарий:

если вы повторяете утверждение в цикл с использованием bind_param и т.д. внутри него для большей операции. я Ты был бы готов очистить его с stmt- > close. но он всегда прерывался с ошибкой после aprox. 250 операций. Поскольку я попробовал это с stmt → reset это сработало для меня.

4b9b3361

Ответ 1

Это хорошо подходит для закрытия, тем более, что вы планируете сделать другой запрос. Как с заявлениями PDO, так и с операторами MySQLi, я обнаружил, что ошибочное поведение на стороне чистоты почти всегда к лучшему - оно удаляет потенциальные ошибки по линии.

Что касается джентльменов с 250 операциями... Я не понимаю, что такое реальный вариант использования. Почему он должен запрашивать базу данных 250 раз? Почему он не может запросить базу данных один раз с 250 записями? Или, что более вероятно, почему он не может запросить базу данных 25 раз с 10 записями?