mysql_num_rows()期望参数1是资源,字符串在

时间:2013-09-12 06:52:57

标签: php boolean

我已经阅读了很多关于这个确切问题的其他线程,但由于某种原因,我无法解决我的问题。真的需要一些帮助。

if (!$username||!$password||!$email)
    echo "Please fill out all fields"; 
 else
 {
    //encrypt password
    $password = md5($password);

    //check if username already taken
    $check = mysql_query("SELECT * FROM Test WHERE username = '$username'");
    if (mysql_num_rows($check)>=1)
       echo "Username already taken";

    else

它说

  

警告:mysql_num_rows()期望参数1是资源,字符串   在/ Users .....中给出

if (mysql_num_rows($check)>=1)这一行......但是当我在phpmyadmin中运行它时,它会将结果返回给我。

请帮忙

5 个答案:

答案 0 :(得分:1)

变化:

$check = mysql_query("SELECT * FROM Test WHERE username = '$username'");

$check = mysql_query("SELECT * FROM Test WHERE username = '$username'") or die(mysql_error());

您将看到查询中发生的任何潜在错误。

另外,我会高度推荐使用PDO或Mysqli而不是mysql函数,因为它们已被弃用,将在未来的php版本中删除。

答案 1 :(得分:1)

尝试这样:

$query = "SELECT username FROM $this->table WHERE username='$sUser'";
$result = mysql_query($query);  
$num_rows = mysql_num_rows($result); 

答案 2 :(得分:0)

首先确保已正确建立与数据库的连接。

而不是直接在

中编写查询
$check = mysql_query("SELECT * FROM Test WHERE username = '$username'");

将查询存储在变量中

$query = "SELECT * FROM Test WHERE username = '".$username."'";

并以

执行
$check = mysql_query($query);

如果你仍然面临这个问题,

将查询回显为

echo $query;

直接在phpmyadmin中执行查询,您就可以找到问题。

我希望这会有所帮助。

答案 3 :(得分:0)

您可以尝试这样

$sql= "SELECT * FROM Test WHERE username = '".$username."'";
$check = mysql_query($sql);

我认为您的 $ check 会返回null,该用户不具有此用户名,null不能是参数 mysql_num_rows()函数。

if($check)
{
    echo "Username already taken";
}
else
{
  echo "Username available";
  // do other actions
}

答案 4 :(得分:0)

好的,如果有人遇到同样的问题,只需在if()语句中添加两次变量,如下所示:

$Query = mysql_query($sql); 
IF($Query && mysql_num_rows($Query)> 0){ // continue with the code}

这应解决问题。