为啥用户输入不附加到我的 SQL 数据库?

Posted

技术标签:

【中文标题】为啥用户输入不附加到我的 SQL 数据库?【英文标题】:Why does the user input not append to my SQL database?为什么用户输入不附加到我的 SQL 数据库? 【发布时间】:2020-04-13 12:58:22 【问题描述】:

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

如果当前不存在,我正在尝试将用户的输入附加到数据库中。我正在使用 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";
            
        
    ?>

代码成功连接到数据库,甚至告诉我用户是否已经存在。它只是没有将用户的电子邮件添加到数据库中,我似乎不知道为什么。

我已经研究了如何使用 prepared statements 将数据插入数据库的方法,就像我在这里所做的那样。我使用了W3Schools 作为参考,但仍然没有运气。

【问题讨论】:

您在尝试保存之前已关闭数据库连接 @Akintunde-Rotimi 我已将您的建议应用于我的代码,但仍然存在相同的问题。有任何想法吗?我还编辑了问题以反映您的建议 【参考方案1】:

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

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

// ...

【讨论】:

以上是关于为啥用户输入不附加到我的 SQL 数据库?的主要内容,如果未能解决你的问题,请参考以下文章

oracle 11g 的SQL的用户名和口令是啥,而且用户名可以输入但是口令为啥输入不了???

为啥从标准输入读取用户输入时我的字符串不匹配?

为啥我的程序接受用户输入的次数不超过两次?

为啥我的文件内容/用户输入不匹配? (缺少chomp规范)[重复]

Firebase - 为啥不搜索在我的应用中工作的用户? (当用户输入两个字母时更新搜索控制器)

dmp文件,不知道对方的用户名(fromuser) 怎么把这个dmp导入到我的数据库中?