首页 > 解决方案 > 为什么用户输入不附加到我的 SQL 数据库?

问题描述

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

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

标签: phpsqlmysqli

解决方案


该代码似乎没有任何明显的拼写错误,那么您是否尝试过捕捉错误?代替

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

// ...

推荐阅读