Проверьте, если уже пользователь вставляет в базу данных php

Мой код работает, если я хочу вставить в базу данных, но моя проверка того, существует ли пользователь, не работает.

* Я думал, что идея состояла в том, чтобы проверить, существует ли строка с этим именем пользователя, если это не добавляет этого пользователя в базу данных, иначе

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

Related of "Проверьте, если уже пользователь вставляет в базу данных php"

Для выполнения запроса вы смешали Procedural style и Object oriented style .

Когда используешь,

1) Процедурный стиль

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

используйте это, $row_count = mysqli_num_rows($result);

2) Объектно-ориентированный стиль

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

Используйте это, $row_count = $result->num_rows;

Итак, согласно вашему коду, вы используете объектно-ориентированный стиль. Итак, вам нужно изменить

 $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