Check if already a user then insert into the database php

时间秒杀一切 提交于 2019-12-22 09:59:16

问题


My code works, if I wish to insert into the database, but my checking whether the user already exists doesn't work.

*I thought the idea was to check if a row exists already with that username, if so don't add that user to the database, else

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

$result = mysqli_query($mysqli, "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();
}

回答1:


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

When using,

1) Procedural Style

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

use this, $row_count = mysqli_num_rows($result);

2)Object oriented style

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

Use this, $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'");

to

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

Edited Code.

$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();
}

For more info, check this mysqli_num_rows vs ->num_rows




回答2:


$db = ("SELECT username FROM userlist WHERE username='$username'");
$query = $conn->query($db);
if(mysqli_fetch_array($query) > 0 ) { //check if there is already an entry for that username
    echo "Username already exists!";
}


来源:https://stackoverflow.com/questions/33129791/check-if-already-a-user-then-insert-into-the-database-php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!