PHP代码说输入为空,但不是吗?

时间:2019-03-12 04:58:09

标签: php html forms login rows

我的php代码有问题,当我输入密码时,它似乎返回“密码不应该为空”。我认为它可能来自我的html代码,因为我让他们输入了两次。我需要在数据库中创建另一个变量以确认密码吗?

<?php
$firstname = filter_input(INPUT_POST, 'firstname');
$lastname = filter_input(INPUT_POST, 'lastname');
$email = filter_input(INPUT_POST, 'email');
$password = filter_input(INPUT_POST, 'password');
if (!empty($firstname)) {
    if (!empty($lastname)) {
        if (!empty($email)) {
            if (!empty($password)) {
                $host = "127.0.0.1:3307";
                $dbusername = "root";
                $dbpassword = "";
                $dbname = "register";
                // Create connection
                $conn = new mysqli($host, $dbfirstname, $dblastname, $dbemail,
                    $dbpassword);
                if (mysqli_connect_error()) {
                    die('Connect Error (' . mysqli_connect_errno() . ') '
                        . mysqli_connect_error());
                } else {
                    $sql = "INSERT INTO Signup (firstname, lastname, email, password) values ('$firstname','$lastname','email','password')";
                    if ($conn->query($sql)) {
                        echo "New record is inserted sucessfully";
                    } else {
                        echo "Error: " . $sql . "" . $conn->error;
                    }
                    $conn->close();
                }
            } else {
                echo "Password should not be empty";
                die();
            }
        }
    }
} else {
    echo "Username should not be empty";
    die();
}

1 个答案:

答案 0 :(得分:3)

您的错误是因为您的帖子值为$_POST['psw'],而您的代码预期为$_POST['password']。更改HTML格式或PHP代码,以使值相同。

您的代码非常令人困惑。我简化了一点,尝试一下,看看是否仍然出现相同的错误:

# Check to see if you're getting the right variables in the first place:
var_dump($_POST); //Remove once you're sure you're getting the right stuff

if(!$firstname = filter_input(INPUT_POST, 'firstname')){
    die("First name should not be empty");
}
if(!$lastname = filter_input(INPUT_POST, 'lastname')){
    die("Last name should not be empty");
}
if(!$email = filter_input(INPUT_POST, 'email')){
    die("Email should not be empty");
}
if(!$password = filter_input(INPUT_POST, 'password')){
    die("Password should not be empty");
}

$host = "127.0.0.1:3307";
$dbusername = "root";
$dbpassword = "";
$dbname = "register";

$conn = new mysqli($host, $dbfirstname, $dblastname, $dbemail, $dbpassword);
if (mysqli_connect_error()) {
    die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
}

$sql = "INSERT INTO Signup (firstname, lastname, email, password) values ('$firstname','$lastname','email','password')";
if (!$conn->query($sql)) {
    echo "Error: " . $sql . "\r\n" . $conn->error;
    $conn->close();
    exit;
}

echo "New record is inserted successfully";

一般准则

  1. 不要嵌套if()语句。它使以下代码非常混乱。
  2. 如果布尔结果会破坏交易,请在if / else语句中首先获得该结果。例如,如果SQL查询失败,请首先在if()语句中得到否定结果(这将停止代码),然后一起跳过else语句。
  3. 注释您的代码。