PHP - 使用mysqli获取单个结果

时间:2009-11-16 19:04:47

标签: php mysql mysqli

我已经决定通过一个项目从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会更容易。还有更好的方法吗?

2 个答案:

答案 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类型,则将强制使用唯一的用户名。