我已经决定通过一个项目从mysql改为mysqli - 并且遇到了这个问题。
实现这一目标的最佳方法是什么: //检查是否采用了用户名 $ result = mysql_result(mysql_query(“SELECT COUNT(*)FROM user WHERE username ='”。$ username。“'”));
我找不到mysql_result的确切版本
我试过这个:
$ result = mysqli_num_rows($ db-> query(“SELECT * FROM user WHERE username ='”。$ username。“'”))
哪个有效,但我认为在mySQL服务器上使用count会更容易。还有更好的方法吗?
答案 0 :(得分:2)
如果您正在尝试确定用户名是否已存在,我可能会建议您将查询更改为“SELECT 1 FROM user WHERE username ='”。 $ username。 “'”强>:
$res = $db->query("SELECT 1 FROM user WHERE username='".$username."'");
if (mysqli_num_rows($res) > 0) {
die('username already taken');
}
在查询数据库之前转义任何和所有用户输入也是一种很好的做法,因为您要为SQL注入攻击做好准备。这是安全版本:
$res = $db->query("SELECT 1 FROM user WHERE username='". mysqli_real_escape_string($username) ."'");
if (mysqli_num_rows($res) > 0) {
die('username already taken');
}
答案 1 :(得分:1)
确保您在user
表上有一个引用username
列的索引,并且您已完成设置。您编写的代码将起作用。
使用count()
将没有任何区别,因为username
应该是唯一的。如果确保索引也是UNIQUE类型,则将强制使用唯一的用户名。