Почему пользовательский ввод не добавляется в мою базу данных SQL? - PullRequest
0 голосов
/ 13 апреля 2020

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

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

Вот код:

<?php
        if($_SERVER["REQUEST_METHOD"] == "POST") {
            //define variables and set values to null
            $email = $code = "";

            //set variable values to HTML input 
            $email = $_POST['email'];
            $code = $_POST['code'];

            //check if email exists
            $stmt = $conn->prepare("SELECT userEmail FROM userDetails WHERE userEmail=?");
            $stmt->bind_param("s", $prepemail);

            //set parameters and execute
            $prepemail = $email;
            $stmt->execute();

            $result = $stmt->get_result();
            if ($result->num_rows > 0) {
                echo "email exists";
                return false;
            } else {
                //$stmt->close(); removed as per @Akintunde-Rotimi's suggestion
                //insert email into database
                $stmt = $conn->prepare("INSERT INTO userDetails (userEmail) VALUES (?)");
                $stmt->bind_param("s", $newemail);

                //set parameters and execute
                $newemail = $email;
                $stmt->execute();
                echo "New records created successfully";
            }
        }
    ?>

Код успешно подключается к базе данных и даже сообщает мне, если пользователь уже существует. Просто не добавляет электронную почту пользователя в базу данных , и я не могу понять, почему.

Я исследовал способы вставки данные в базу данных, используя подготовленные заявления , как я сделал здесь. Я использовал W3Schools в качестве справки, но все еще не повезло.

1 Ответ

0 голосов
/ 13 апреля 2020

Кажется, в коде нет явных орфографических ошибок, поэтому вы пытались их отлавливать? Замените

$stmt->execute();

на

if(!$stmt->execute()) {
    trigger_error("there was an error....".$conn->error, E_USER_WARNING);
}

Вы также можете проверить, сколько строк затронуто, -1 означает, что произошла ошибка.

printf("%d Zeile eingefügt.\n", $stmt->affected_rows);

Также, включив будет показано больше ошибок (по крайней мере, для разработки)

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...