【发布时间】:2015-10-14 15:40:43
【问题描述】:
如果我想插入数据库,我的代码可以工作,但是我检查用户是否已经存在不起作用。
*我认为这个想法是检查该用户名是否已存在一行,如果存在则不要将该用户添加到数据库中,否则
$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();
}
【问题讨论】:
-
你可以在
users.username和ON DUPLICATE KEY UPDATE上放一个UNIQUE索引 -
对不起,我不明白你的意思,如果你是这个意思,每个用户名旁边都有一个 user_Id pk
-
如果您将
UNIQUE索引添加到users.username,您实际上不需要先检查它是否存在,您可以尝试执行INSERT- 通常它会失败如果您尝试使用已经存在的唯一键插入数据,则会出现错误...但是,您可以使用ON DUPLICATE KEY UPDATE语法来更新现有记录,而不是尝试创建新记录,请参阅:dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html跨度> -
完美运行,有没有办法输出“用户已存在”而不是显示重复键的消息?
-
另外如果你想回答我可以接受的问题
标签: php mysqli registration