Когда закрывать подготовленные операторы в 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();
здесь?
Редактировать:
То, что написано в руководстве по PHP, а также один комментарий из руководства гласит:
Закрывает подготовленное утверждение.mysqli_stmt_close () также освобождает дескриптор оператора.Если текущий оператор имеет ожидающие или непрочитанные результаты, эта функция отменяет их, чтобы можно было выполнить следующий запрос.
Комментарий:
, если вы повторяете оператор вцикл, использующий bind_param и так далее внутри него для более крупной операции.я думаю, было бы хорошо, чтобы очистить его с помощью stmt-> close.но он всегда ломался с ошибкой после aprox.250 операций.Когда я попробовал его с помощью stmt-> reset, он работал для меня.