【发布时间】:2011-12-05 18:58:51
【问题描述】:
我有一个 PHP 登录脚本。这是该人可以创建新用户的部分。我的问题是我想检查用户是否存在,如果用户名不存在于表中,则创建新用户。但是,如果用户确实存在,我希望它在会话变量中返回错误。这是我现在拥有的代码。这不包括我的数据库连接,但我知道它们确实有效。它的num_rows() 被写为error_log 文件中的错误。代码如下:
$username = mysql_real_escape_string($username);
$query = "SELECT * FROM users WHERE username = '$username';";
$result = mysql_query($query,$conn);
if(mysql_num_rows($result)>0) //user exists
{
header('Location: index.php');
$_SESSION['reg_error']='User already exists';
die();
}
else
{
$query = "INSERT INTO users ( username, password, salt )
VALUES ( '$username' , '$hash' , '$salt' );";
mysql_query($query);
mysql_close();
header('Location: index.php');
它给我的错误是
mysql_num_rows(): supplied argument is not a valid MySQL result resource in [dirctory name]
【问题讨论】:
-
判断一行是否存在,可以使用SELECT COUNT(*)
-
您需要对
mysql_query()进行错误检查。if (!$result) echo mysql_error() -
mysql_error()会告诉你查询失败的确切原因(这就是mysql_num_rows()抱怨的原因。 -
一些建议,你不需要一个“;”在查询中,你确定你能够连接到数据库吗?
标签: php mysql html error-log mysql-num-rows