为什么用户输入没有附加到我的 SQL 数据库?

Why does the user input not append to my SQL database?

我正在为我的客户开发一个 login/register 表格。现在我正在处理表格的注册部分,但我似乎遇到了问题。

我正在尝试将用户的输入附加到当前不存在的数据库中。我正在使用 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 作为参考,但仍然没有运气。

该代码似乎没有任何明显的拼写错误,所以您是否尝试过捕获错误?替换

$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);

// ...