Не удается отправить данные в базу данных PostgreSQL

Я пытаюсь создать систему регистрации, в которой пользователь вводит свое имя и адрес электронной почты и получает электронное письмо, в котором он подтверждает подписку. После этого этот код можно использовать для ввода некоторой личной информации, необходимой для регистрации в номере отеля. Проблема в том, что я не могу отправить данные в базу данных, я могу отправить форму, но данные не отправляются в базу данных, поэтому электронное письмо не будет отправлено этому человеку. Вот код:

<?php
//register.php

include('database_connection.php');

if (isset($_SESSION['user_id']))
{
    header("location:index.php");
}

$message = '';

if (isset($_POST["register"]))
{
    $query = "
    SELECT * FROM tregister
    WHERE email = :user_email
    ";
    $statement = $connect->prepare($query);
    $statement->execute(
        array(
            ':user_email'   =>  $_POST['user_email']
        )
    );
    $no_of_row = $statement->rowCount();
    if ($no_of_row > 0)
    {
        $message = '<label class = "text-danger">Email Already Exits</label>';
    }
    else
    {

        $user_activation_code = md5(rand());
        $user = (isset($_POST['user_name']) && !empty($_POST['user_name'])) ? $_POST['user_name'] : "" ;
        $email = (isset($_POST['user_email']) && !empty($_POST['user_email'])) ? $_POST['user_email'] : "" ;
        $insert_query = "
        INSERT INTO tregister
        (nume, email, cod_activare, email_status)
        VALUES ('$user','$email','$user_activation_code','$email_status');
        ";
        $statement = pg_prepare($connect,$insert_query);
//HERE IT'S THE PROBLEM I think
        $statement=pg_execute($connect,array(
                ':user_name'            =>  $_POST['user_name'],
                ':user_email'           =>  $_POST['user_email'],
                ':user_activation_code' =>  $user_activation_code,
                ':user_email_status'    =>  '0'
            )
        );

        $result = pg_fetch_all($statement);
        var_dump($result);
        if (isset($result))
        {
            $base_url = "http://dev.incorom.local/login-robinson/www/login.php";  //change this baseurl value as per your file path
            $mail_body = "
            <p>Hi ".$_POST['user_name'].",</p>
            <p>Thanks for Registration. </p>
            <p>Please Open this link to verified your email address - ".$base_url."email_verification.php?activation_code = ".$user_activation_code."
            <p>Best Regards,<br />Webslesson</p>
            ";
            require 'class/class.phpmailer.php';
            $mail = new PHPMailer;
            $mail->IsSMTP();                                //Sets Mailer to send message using SMTP
            $mail->Host = 'smtpout.secureserver.net';       //Sets the SMTP hosts of your Email hosting, this for Godaddy
            $mail->Port = '80';                             //Sets the default SMTP server port
            $mail->SMTPAuth = true;                         //Sets SMTP authentication. Utilizes the Username and Password variables
            $mail->Username = '';                   //Sets SMTP username
            $mail->Password = '';                   //Sets SMTP password
            $mail->SMTPSecure = '';                         //Sets connection prefix. Options are "", "ssl" or "tls"
            $mail->From = '[email protected]';           //Sets the From email address for the message
            $mail->FromName = 'Webslesson';                 //Sets the From name of the message
            $mail->AddAddress($_POST['user_email'], $_POST['user_name']);       //Adds a "To" address
            $mail->WordWrap = 50;                           //Sets word wrapping on the body of the message to a given number of characters
            $mail->IsHTML(true);                            //Sets message type to HTML
            $mail->Subject = 'Email Verification';          //Sets the Subject of the message
            $mail->Body = $mail_body;                           //An HTML or plain text message body
            if ($mail->Send())                               //Send an Email. Return true on success or false on error
            {
                $message = '<label class = "text-success">Register Done, Please check your mail.</label>';
            }
        }
    }
}

?>

<!DOCTYPE html>
<html>
    <head>
        <title>PHP Register Login Script with Email Verification</title>
        <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
        <link rel = "stylesheet" href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
        <script src = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    </head>
    <body>
        <br />
        <div class = "container" style = "width:100%; max-width:600px">
            <h2 align = "center">PHP Register Login Script with Email Verification</h2>
            <br />
            <div class = "panel panel-default">
                <div class = "panel-heading"><h4>Register</h4></div>
                <div class = "panel-body">
                    <form method = "post" id = "register_form">
                        <?php echo $message; ?>
                        <div class = "form-group">
                            <label>User Name</label>
                            <input type = "text" name = "user_name" class = "form-control" pattern = "[a-zA-Z ]+" required />
                        </div>
                        <div class = "form-group">
                            <label>User Email</label>
                            <input type = "email" name = "user_email" class = "form-control" required />
                        </div>
                        <div class = "form-group">
                            <input type = "submit" name = "register" id = "register" value = "Register" class = "btn btn-info" />
                        </div>
                    </form>
                    <p align = "right"><a href = "login.php">Login</a></p>
                </div>
            </div>
        </div>
    </body>
</html>

Вот это database_connection:

<?php
//database_connection.php

$connect = new PDO('pgsql:host=localhost;dbname=login_robinson', 'robinson', '1234');
session_start();

?>

Технически PDOStatement::rowCount() возвращает количество строк, затронутых последним запросом INSERT, UPDATE или DELETE. нет - количество строк, возвращенных оператором SELECT (хотя некоторые БД это делают). Вместо этого попробуйте подсчитать набор записей.

CD001 12.07.2018 10:05

в вашей вставке отсутствуют заполнители, используйте: user_name, а не $ user

FatFreddy 12.07.2018 10:06

Дело в том, что этот код отлично работает для mysql, но для Postgres он не работает, и я не понимаю, почему ..

Robinson Chera 12.07.2018 10:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
153
0

Другие вопросы по теме