Проверка PHP на MySQL, если пользователь существует

У меня есть скрипт, который обновляет / создает пользователя с устройства iOS. Теперь я хочу, чтобы скрипт также проверял, существует ли пользователь в базе данных. Сейчас я собираюсь ограничить это имя пользователя, так что может существовать не более ОДНОГО уникального имени пользователя. У меня есть PHP-оператор в моем PHP, но я не могу заставить его работать — помогите пожалуйста :).

    <?php

header('Content-type: application/json');
if($_POST) {
$username   = $_POST['username'];
$password   = $_POST['password'];

if($username && $password) {

$db_name     = 'dbname';
$db_user     = 'dbuser';
$db_password = 'dbpass';
$server_url  = 'localhost';

$mysqli = new mysqli('localhost', $db_user, $db_password, $db_name);

$userexists = mysql_query("SELECT * FROM users WHERE username='$username'");

/* check connection */
if (mysqli_connect_errno()) {
error_log("Connect failed: " . mysqli_connect_error());
echo '{"success":0,"error_message":"' . mysqli_connect_error() . '"}';
}

if(mysql_num_rows($userexists) != 0) {
echo '{"success":0,"error_message":"Username Exist."}';
}

else {

$stmt = $mysqli->prepare("INSERT INTO users (username, password, email) VALUES (?, ?, ?)");
$password = md5($password);

$stmt->bind_param('sss', $username, $password, $email);

/* execute prepared statement */
$stmt->execute();

if ($stmt->error) {error_log("Error: " . $stmt->error); }

$success = $stmt->affected_rows;

/* close statement and connection */
$stmt->close();

/* close connection */
$mysqli->close();
error_log("Success: $success");

if ($success > 0) {
error_log("User '$username' created.");
echo '{"success":1}';
}
else {
echo '{"success":0,"error_message":"Username Exist."}';
}
}

}
else {
echo '{"success":0,"error_message":"Passwords does not match."}';
}
}
else {
echo '{"success":0,"error_message":"Invalid Username."}';
}
}
else {
echo '{"success":0,"error_message":"Invalid Data."}';
}
?>

0

Решение

Вы могли бы SELECTтаблица, прежде чем пытаться вставить username, Если он уже существует (= у вас есть результат), вы просто не вставляете.

Еще лучше, используйте ON DUPLICATE IGNORE или что-то типа того.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]