отобразить сообщение об ошибке, если пользователь уже существует - PullRequest
0 голосов
/ 06 мая 2018

Как настроить функцию отображения error message, если пользователь уже существует на database?

Помогите, пожалуйста, понять эту концепцию!

<?php
session_start();
$_SESSION['message'] = '';

$mysqli = new mysqli('localhost', 'root', 'root', 'accounts');

if ($_SERVER['REQUEST_METHOD'] == 'POST') {

    $username = $mysqli->real_escape_string($_POST['username']);

    $_SESSION['username'] = $username;

    $sql = "INSERT INTO users (username)" . "VALUES ('$username')";

    // if the query is successful, redirect to play page
    if ($mysqli->query($sql) === true) {
        header("location: play.php");
    } else {
        $_SESSION['message'] = "Username exist";
        header("location: index.php");
    }

}

?>

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Функция для проверки, если имя пользователя уже существует:

function username_exists($username){
    global $mysqli;
    $stmt = $mysqli->prepare("SELECT COUNT(*) as total FROM users WHERE username = ?;");
    $stmt->bind_param("s", $username);
    $stmt->execute();
    $result = $stmt->get_result();
    $row = $result->fetch_assoc();
    return (isset($row['total']) AND $row['total'] > 0); // returns true if username exists and false otherwise..
}

С этим ...

Вы можете сделать:

if(username_exists($username) === true){
    echo "Username: $username already exists!";
}
else {
    // insert user record to database
}
0 голосов
/ 06 мая 2018

Ваш код может не работать, если вы не добавили индекс unique для столбца имени пользователя в своей таблице MySQL.

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

в вашем коде вы полагаетесь на сервер MySQL, чтобы выдать ошибку, которая является наилучшим способом поиска дубликатов.

Чтобы сделать имя пользователя уникальным, выполните следующий запрос:

СОЗДАТЬ УНИКАЛЬНЫЙ ИНДЕКС uname_uniq ON имя таблицы (имя пользователя);

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