当前位置: 首页 > 知识库问答 >
问题:

未将mysqli查询结果插入数据库

羊舌新荣
2023-03-14

我正在为我的网站做一个注册页面。我在PHPMyAdmin中维护一个包含7个字段的数据库(id、用户名、密码、电子邮件、活动、代码和日期)。我正在使用代码和活动字段来实现电子邮件激活。注册表单使用post方法获取4个参数(名称、电子邮件、密码和重新键入密码),并将提交按钮的信息传递给PHP代码,以检查用户是否是新的,电子邮件ID是否应该是新的,并在单击提交按钮后检查空字段。PHP代码如下所示:

if($_POST['registerbtn']){
//checking each fields
$getuser = $_POST['user'];
$getemail = $_POST['email'];
$getpass = $_POST['pass'];
$getretypepass = $_POST['retypepass'];

if($getuser){
    if($getemail){
        if($getpass){
            if($getretypepass){
                if($getpass === $getretypepass){
                    if((strlen($getemail) >= 7)&& (strstr($getemail, "@")) && (strstr($getemail, "."))){
                        $con= mysqli_connect("localhost", "root", "", "web" );
                        $query= mysqli_query($con, "SELECT * FROM users WHERE username='$getuser'");
                        $numrows= mysqli_num_rows($query);
                        if($numrows == 0){
                            $query= mysqli_query($con, "SELECT * FROM users WHERE email='$getemail'");
                            $numrows= mysqli_num_rows($query);
                        if($numrows == 0){

                            $password = md5(md5("dfhXjh".$getpass."12asdss"));
                            $date = date("F d, Y");
                            $code = md5(rand());
                            mysqli_query($con, "INSERT INTO users (`id`, `username`, `password`, `email`, `active`, `code`, `date`) VALUES(
                            '', '$getuser', '$password', $getemail', '0', '$code', '$date')"); //This statement
                            $query= mysqli_query($con, "SELECT * FROM users WHERE username = '$getuser'");
                            $numrows= mysqli_num_rows($query);
                            if($numrows == 1){
                                $site ="http://localhost/web";
                                $webmaster ="Ace <ace8@gmail.com>";
                                $headers ="From: $webmaster";
                                $subject ="Activate your account";
                                $message = "Thanks for registering. Click the link below to activate your account.\n";
                                $message .="$site/activate.php?user=$getuser&code=$code \n";
                                $message .="You must activate your account to login.";

                                if( mail($getemail, $subject, $message, $headers) ){
                                    $errormsg = "You have been registered. You must activate your account from the activation link sent to <b>$getemail</b>";
                                    $getuser = "";
                                    $getemail = "";

                                }
                                else
                                    $errormsg = "An error has occured. Activation mail not sent.";

                            }
                            else
                            $errormsg= "An error occured. Account was not created.";
                        }
                        else
                        $errormsg="A user with that e-mail already exists.";    
                        }
                        else
                        $errormsg="A user with that username already exists.";

                        mysqli_close($con);
                    }
                    else
                    $errormsg= "You must enter a valid e-mail address.";
                }
                else
                $errormsg= "Passwords did not match.";
            }
            else
            $errormsg= "You must re-type your password.";
        }
    else
    $errormsg= "You must enter your password.";
    }
        else
        $errormsg= "You must enter your e-mail.";
}
else
$errormsg = "You must enter your user name.";}

当我在加密密码、生成激活链接代码并将active设置为零之后插入新用户时,它不会被插入数据库(请参阅此语句注释)。我无法理解,最终显示消息“发生错误。未创建帐户。”

共有2个答案

张光辉
2023-03-14

终于发现了错误。在insert语句之前,我没有检查连接是否存在。除此之外,还必须对insert语句进行一些修改,如图所示。

if($con){mysqli_query($con, "INSERT INTO users (`id`, `username`, `password`, `email`, `active`, `code`, `date`) VALUES('', '".$getuser."', '".$password."', '".$getemail."', '0', '".$code."', '".$date."')");} else echo "Connection lost.";
苏宏逸
2023-03-14

我假设'id'列是这个表的主键,因此设置为自动递增。鉴于此,您不应该在insert语句中指定它。它也可能是数据库中的必填字段,因此在此处尝试将其设置为“”将导致错误。

 类似资料:
  • 问题内容: 我一直在看这段代码已有一段时间了,但我看不出问题出在哪里。我已经阅读了整个StackOverflow,但仍然看不到我的错误在哪里。 错误在第13行中,即thats 。我尝试通过http://www.w3schools.com/php/php_mysql_insert.asp帮助自己,但对我没有太大帮助。 问题答案: 警告: 切勿将 w3schools 用于学习目的。他们的教程中有很多错

  • 我正在制作一个php注册脚本,注册工作正常,所有内容都已成功输入数据库,激活电子邮件工作正常,但每当我使用mysqli查询来选择或更新信息时,它都不起作用。 例如,当我使用我知道数据库中存在的帐户登录时,它告诉我用户名不存在,当单击电子邮件中的激活链接时,查询无法以相同的方式更新数据库。 我相信这是一个非常简单的错误,我忽略了我的新手,但我找了几个小时后找不到合适的答案。我真的不确定问题出在哪里。

  • 问题内容: 我有一个报告,显示客户订购的产品及其价格: 我想插入一行来汇总每个公司的订单,如下所示: 这是一些代码,显示了我所拥有的查询的基本结构: 有谁知道如何做到这一点?我在Transact-SQL(Microsoft SQL Server)中编写此代码。 问题答案: 感谢大家的反馈/帮助,至少让我想到了不同的方法。我想出了一些与我使用的SQL Server版本无关的东西(我们的供应商经常更改

  • 问题内容: 我寻求帮助的以下问题:我有两个表 列,, 列,,, 我想将数据从(仅列)复制到(到列)。该均在表中相同(有重复项的ID),所以这就是我要复制到新表,并保持在一个单一的行中的所有数量与每个位置为一列的原因。我正在使用以下查询,但它不起作用 问题答案: 如果为空,请尝试以下插入语句: 如果已经包含值,请尝试以下更新语句:

  • 问题内容: 我有以下代码: 如果只有一个结果(因为我可以回显)就很好了,但是如果有很多结果,如何使它循环遍历并打印每一行? 我敢肯定这确实很简单,但是我不确定我需要在Google中搜索什么。 我正在寻找与之等效的东西: 问题答案: 只需将其替换为or :) 几乎所有功能都有相应的功能。

  • 问题内容: 我有一个动态查询,执行时会给出带有很多列的结果。我想将来自此动态查询的结果插入到临时表中。我这样做是因为我想对临时表执行一些过滤并获得所需的结果。 在该线程中先创建一个临时表,然后使用插入数据。 由于列的列表太长,我想避免此步骤,而且我不知道字段的数据类型。 错误信息 关键字“ exec”附近的语法不正确。 这该怎么做 ?是否可以通过这种方式完成?如果不是,请指定其他替代方法以将执行动