简单的php脚本添加用户mysql数据库不工作


Simple php script add user to mysql database not working

在添加代码以检查用户是否已经存在于数据库之前,脚本工作正常,这是我无法弄清楚为什么它不工作的部分。这是一个Android应用程序的测试环境,所以我更喜欢最简单的版本。

<?php
require_once 'connect_db.php';
$conn = new mysqli($hostname, $admin_name, $admin_pwd, $database);
if($conn->connect_error) {
    die($conn->connect_error);
}
if(isset($_REQUEST["username"]) && isset($_REQUEST["email"]) && isset($_REQUEST["password"]) && isset($_REQUEST["user_type"])) {
    echo "Welcome ". $_REQUEST['username']. "<br />";
    $name = $_REQUEST['username'];
    $email = $_REQUEST['email'];
    $pwd = $_REQUEST['password'];
    $user_type = $_REQUEST['user_type'];
    // first check if user already exists
    $query = "SELECT 1 FROM users WHERE `EMAIL` = '$email'";
    $result = $conn->query($query);
    if (!$result) die("Database access failed: " . $conn->error);
    if (mysqli_num_rows($result) > 0) {
        echo "Error inserting user into database. User already exists";
    } else {
        // then do insert new user
        $query_insert_user = "INSERT INTO users (`NAME`, `EMAIL`, `PWD`, `USER_TYPE`) VALUES ('$name', '$email', '$pwd', '$user_type')";
        if ($conn->query($query_insert_user) === TRUE) {
            echo "New record created successfully";
        } else {
            echo "Error: " . $query_insert_user . "<br>" . $conn->error;
        }
    }
    $result->close();
    $conn->close();
} else {
    echo "Error inserting user into database. Missing user parameters";
}

?>

改变行

$query = "SELECT 1 FROM users WHERE EMAIL = '$email'";

$query = "SELECT 1 FROM users WHERE EMAIL = '".$email.";

我无法测试它,但乍一看,我建议:

  • 将您的查询更改为Jesper的建议(虽然"应该扩展您的变量,但是…)
  • ,可以用mysqli_num_rows($result)代替$result->num_rows进行OOP吗?查看PHP手册mysqlli -result.num-rows

好运。

来自朋友的一些示例代码可以正常工作。我改成:

// first check if user already exists
    $query = "SELECT 1 FROM users WHERE NAME = '$name' OR EMAIL = '$email'";
    $result = mysqli_fetch_array(mysqli_query($conn,$query));
    if (isset($result)){
        echo 'username or email already exist';