值未添加到数据库中

时间:2014-03-11 20:27:50

标签: php mysql database

我是PHP和Mysql的新手。我已经创建了一个注册表单,但输入的值没有保存在我的数据库中。我不知道为什么。我连接到数据库。谁能给我一些见解?顺便说一句,我知道你会说“Mysql”已被弃用。但我刚刚开始学习所有这些是如何工作的。一旦我对流程有了透彻的了解,我就会将代码更改为Mysqli ......

    <?php

    //form data
    $submit = strip_tags($_POST['submit']);
    $fname =  strip_tags($_POST['fname']);
    $lname = strip_tags($_POST['lname']);
    $usernamereg = strip_tags($_POST['usernamereg']);
    $passwordreg = strip_tags($_POST['passwordreg']);
    $email = strip_tags($_POST['email']);
    $emailcheck = strip_tags($_POST['emailcheck']);
    $date = date("Y-m-d");





    if($submit)
    {
//check for existence
        if($fname&&$lname&&$usernamereg&&$passwordreg&&$email&&$emailcheck)
        {   
    //encrypt password
    $password = md5($passwordreg);

      if(strlen($usernamereg)>25)
      {
        echo "Username must be 25 characters or less.";
      }
      else
      {
        //checks password length
        if(strlen($passwordreg)<6)
        {
            echo "Passwords must be atleast 6 characters long";
        }
        else
        {
            if($email!=$emailcheck)
            {
            echo "emails to not match";
            }
            else
            {

                //open database
                $connect = mysql_connect("localhost","root","clandestine");
                mysql_select_db("user_db"); //selects database

                $queryreg = mysql_query("INSERT INTO users VALUES('','$date','$fname','$lname','$usernamereg','$passwordreg','$email','$emailcheck'");
                echo "You have been registered!";

            }
        }

    }

}
else
    echo "Please fill in <b>all</b> fields!";

2 个答案:

答案 0 :(得分:0)

尝试在INSERT查询中分配列。

$queryreg = mysql_query("INSERT INTO users (`randomField`, `date`, `first_name`, `last_name`, `username`, `password`, `email`, `email_check`) VALUES ('','$date','$fname','$lname','$usernamereg','$passwordreg','$email','$emailcheck'");

第一列应该是什么?

你做过任何健全检查吗? (即,在代码中的某些点将测试数据打印到屏幕上,以确保您的IF语句评估为真?

此外,尝试将INSERT查询保存为变量字符串:

$query = "INSERT INTO.............";

然后将其打印到屏幕上。将该查询复制并粘贴到PHPMyAdmin(如果您有权访问它),并查看您的语句是否有任何错误。 PMA会告诉你哪些错误,如果有的话。

编辑:此外,请不要MD5密码或其他高度敏感的数据。使用安全算法并加密密码。如果你不确定这一切意味着什么:

参考this link

答案 1 :(得分:0)

如果你这样做,你会得到什么:

$query = "INSERT INTO users 
(date, first_name, last_name, username, password, email, email_check) 
 VALUES 
('$date','$fname','$lname','$usernamereg','$passwordreg','$email','$emailcheck')";

mysql_query($query)or die('Error: <br />'.$query.'<br />'.mysql_error());

请注意,删除反引号只是为了简化代码。保留它们是正确的,但在列名中没有空格等,无论如何都应该有效。哦,当然,这不是生产的好方法。真的很清楚调试。