且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

检查是否已经有用户,然后将其插入数据库php

更新时间:2023-11-29 07:51:27

您混合了Procedural style& Object oriented style用于执行查询.

You have mixed the Procedural style & Object oriented style for executing the query.

使用时,

1)程序风格

$result = mysqli_query($mysqli, "Your Query");

使用此$row_count = mysqli_num_rows($result);

2)面向对象的样式

$result = $mysqli->query("Your Query");

使用此$row_count = $result->num_rows;

因此,根据您的代码,您正在使用面向对象的样式.因此,您需要更改

So, According to your code, You are using Object Oriented Style. So, you need to change

$result = mysqli_query($mysqli,"SELECT username FROM users WHERE username = '$username'");

$result = $mysqli->query("SELECT username FROM users WHERE username = '$username'");

修改后的代码.

$email = $_POST['email'];
$password= password_hash($_POST['password'], PASSWORD_BCRYPT, $options);
$username= $_POST['username'];

$result = $mysqli->query("SELECT username FROM users WHERE username = '$username'");
$row_count = $result->num_rows;
if($row_count == 1)
{
    echo 'User exists';
}
else
{
    $query = "INSERT INTO users (username, email, password) VALUES(?, ?, ?)";
    $statement = $mysqli->prepare($query);

    //bind parameters for markers, where (s = string, i = integer, d = double,  b = blob)
    $statement->bind_param('sss', $username, $email, $password);

    if($statement->execute())
    {
         print 'Success! ID of last inserted record is : ' .$statement->insert_id .'<br />'; 
    }
    else
    {
         die('Error : ('. $mysqli->errno .') '. $mysqli->error);
    }
    $statement->close();
}

有关更多信息,请检查 mysqli_num_rows vs-> num_rows

For more info, check this mysqli_num_rows vs ->num_rows