如果用户已存在,则显示错误消息

时间:2018-05-05 22:57:03

标签: php mysqli

如果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 :(得分:0)

如果您没有在MySQL表格中为username列添加unique索引,那么您的代码可能无效。

如果您不想编辑Mysql数据库,则应在将用户名插入数据库之前检查该用户名是否存在。

在您的代码中,您依靠MySQL服务器抛出错误,这是查找重复项的最佳方法。

要使用户名列唯一,请运行以下查询:

  

CREATE UNIQUE INDEX uname_uniq ON tablename(username);

答案 1 :(得分:0)

检查用户名是否已存在的功能:

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
}
相关问题