注册页面不会将数据插入数据库

时间:2015-06-29 03:18:10

标签: php

不确定为什么但是当我在注册表单上提交时它不会将数据插入到数据库中,它会通过重定向到注册成功页面来执行底部的最后一个else语句,这会让我感到困惑。我有它工作,但我做了一些事情,我无法弄清楚出了什么问题..

 <?php
 if(isset($_POST['submit'])) {
     $username = $_POST['username'];
     $password = md5($_POST['password']);
     $email = $_POST['email'];
     $Fname = $_POST['Fname'];
     $Lname = $_POST['Lname'];
     $Display1 = $_POST['Display1'];
     $Display2 = $_POST['Display2'];
     $query = mysql_query("SELECT * FROM users WHERE username ='$username'");
     if(empty($username) or empty($password) or empty($email) or  empty($Fname) or empty($Lname) or empty($Display1)) {
        echo '<p>Fields Empty!</p>';
     } else if(mysql_num_rows($query) > 0){
         $query = mysql_query("SELECT * FROM users WHERE username   ='$username' AND password ='$password'");
         echo'<p>Username or Password Already Exists!</p>';
     } else {
         mysql_query("INSERT INTO users VALUES('', '$username', '$password', '2', 'a', '$Fname', '$Lname', '$email', '$Display1', '$Display2')");

         $subject = "Membership Confirmation";
         $message = "Hello, You have registered an account on Joepepjoepep.com";
         $from = "From: joepep235@gmail.com";

         header("location:signuppayment.php");
         mail($email, $subject, $message, $from);
     }
}
?>

2 个答案:

答案 0 :(得分:1)

试试这个:  您忘了将需要插入的行放入数据库中。

mysql_query("INSERT INTO users VALUES('', '$username', '$password', '2', 'a', '$Fname', '$Lname', '$email', '$Display1', '$Display2')");

将此更改为以下内容:

mysql_query("INSERT INTO users(id, username, password, Display1, Display2, email, Fname, Lname, user_level, type) VALUES ('', '$username', '$password', '$Display1', '$Display2', '$email', '$Fname', '$Lname', '2', 'a')");

所以在你的代码中应用它:

<?php

if(isset($_POST['submit'])) {
    $username = $_POST['username'];
    $password = md5($_POST['password']);
    $email = $_POST['email'];
    $Fname = $_POST['Fname'];
    $Lname = $_POST['Lname'];
    $Display1 = $_POST['Display1'];
    $Display2 = $_POST['Display2'];
    $query = mysql_query("SELECT * FROM users WHERE username ='$username'");
     if((empty($username)) || (empty($password)) || (empty($email)) ||  (empty($Fname)) || (empty($Lname)) || (empty($Display1))) {
        echo '<p>Fields Empty!</p>';
     } else if(mysql_num_rows($query) > 0){
         $query = mysql_query("SELECT * FROM users WHERE username   ='$username' AND password ='$password'");
         echo'<p>Username or Password Already Exists!</p>';
     } else {
         mysql_query("INSERT INTO users(id, username, password, Display1, Display2, email, Fname, Lname, user_level, type) VALUES ('', '$username', '$password', '$Display1', '$Display2', '$email', '$Fname', '$Lname', '2', 'a')");

            $subject = "Membership Confirmation";
            $message = "Hello, You have registered an account on Joepepjoepep.com";
            $from = "From: joepep235@gmail.com";

            header("location:signuppayment.php");
            mail($email, $subject, $message, $from);
 }

 }

 ?>

希望这有帮助。

答案 1 :(得分:0)

在表格定义中为您的用户名字段创建unique key 然后,用户名只能在表中一次,而具有相同用户名的第二个插入查询将失败并显示specific error code。 (由于您的多次查询,您可以避开race condition) 您可以检查该错误代码,然后显示已使用的&#34;用户名&#34;错误信息。