如果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");
}
}
?>
答案 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
}