Ошибка при закрытии соединения после вставки в БД?

Добрый день!
Подскажите, почему появляется Fatal error: Uncaught Error: Call to a member function close() on boolean in /srv/disk11/2104939/www/bradsite.tk/register.php:337 Stack trace: #0 {main} thrown in /srv/disk11/2104939/www/bradsite.tk/register.php on line 337?

Строка $result_query_insert->close(); с ошибкой в коде ниже:
<?php
//Запрос на добавления пользователя в БД
$result_query_insert = $mysqli->query("INSERT INTO `users` (first_name, last_name, email, password, date_registration) VALUES ('".$first_name."', '".$last_name."', '".$email."', '".$password."', NOW())");

if(!$result_query_insert){
    // Сохраняем в сессию сообщение об ошибке. 
    $_SESSION["error_messages"] .= "<p class='mesage_error' >Ошибка запроса на добавления пользователя в БД</p>";
    
    //Возвращаем пользователя на страницу регистрации
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: ".$address_site."form_register.php");

    //Останавливаем  скрипт
    exit();
}else{              
    //Составляем зашифрованный и уникальный token
    $token=md5($email.time());

    //Добавляем данные в таблицу confirm_users
    $query_insert_confirm = $mysqli->query("INSERT INTO `confirm_users` (email, token, date_registration) VALUES ('".$email."', '".$token."', NOW()) ");

    if(!$query_insert_confirm){
        // Сохраняем в сессию сообщение об ошибке. 
        $_SESSION["error_messages"] .= "<p class='message_error' >Ошибка запроса на добавление пользователя в БД (confirm)</p>";
        
        //Возвращаем пользователя на страницу регистрации
        header("HTTP/1.1 301 Moved Permanently");
        header("Location: ".$address_site."form_register.php");

        //Останавливаем  скрипт
        exit();
    }else{

        //Составляем заголовок письма
        $subject = "Подтверждение почты на сайте ".$_SERVER['HTTP_HOST'];

        //Устанавливаем кодировку заголовка письма и кодируем его
        $subject = "=?utf-8?B?".base64_encode($subject)."?=";

        //Составляем тело сообщения
        $message = 'To get started <a href="http://www.bradsite.tk/activation.php?email='.$email.'&token='.$token.'">Verify your account</a><br><br>';
        
        //Составляем дополнительные заголовки для почтового сервиса mail.ru
        //Переменная $email_admin, объявлена в файле dbconnect.php
        $headers = "FROM: $email_admin\r\nReply-to: $email_admin\r\nContent-type: text/html; charset=utf-8\r\n";
        
        //Отправляем сообщение с ссылкой для подтверждения регистрации на указанную почту и проверяем отправлена ли она успешно или нет. 
        if(mail($email, $subject, $message, $headers)){
            $_SESSION["success_messages"] = "<h4 class='success_message'><strong>Регистрация прошла успешно!!!</strong></h4><p class='success_message'> Теперь необходимо подтвердить введенный адрес электронной почты. Для этого, перейдите по ссылке указанную в сообщение, которую получили на почту ".$email." </p>";

            //Отправляем пользователя на страницу регистрации и убираем форму регистрации
            header("HTTP/1.1 301 Moved Permanently");
            header("Location: ".$address_site."form_register.php?hidden_form=1");
            exit();

        }else{
            $_SESSION["error_messages"] .= "<p class='message_error' >Ошибка при отправлении письма с сcылкой подтверждения, на почту ".$email." </p>";
        }

        // Завершение запроса добавления пользователя в таблицу users
        $result_query_insert->close(); //  <<<<<<<<<<<Строка 337 с ошибкой

        // Завершение запроса добавления пользователя в таблицу confirm_users
        $query_insert_confirm->close();
    }
}

//Закрываем подключение к БД
$mysqli->close();

//Отправляем пользователя на страницу регистрации
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".$address_site."form_register.php");

exit();
   
?>
  • Вопрос задан
  • 109 просмотров
Пригласить эксперта
Ответы на вопрос 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Вам не нужен никакой close() после каждого запроса в принципе. Просто уберите эти строчки.

Как правило даже последний $mysqli->close(); тоже не имеет смысла делать, если вы четко не понимаете для чего это. PHP удалит все дескрипторы и закроет соединение автоматически при окончании работы скрипта.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы