2

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

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 中运行它时,它会返回结果给我。

请帮忙

4

5 回答 5

3

试着喜欢这样:

$query = "SELECT username FROM $this->table WHERE username='$sUser'";
$result = mysql_query($query);  
$num_rows = mysql_num_rows($result); 
于 2013-09-12T06:59:54.430 回答
2

改变:

$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 版本中删除。

于 2013-09-12T06:57:42.213 回答
1

首先,您确保正确建立了与数据库的连接。

而不是直接写查询

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

将查询存储在变量中

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

并将其执行为

$check = mysql_query($query);

如果您仍然面临问题,

将查询回显为

echo $query;

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

我希望这有帮助。

于 2013-09-12T07:02:48.397 回答
1

你可以这样尝试

$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
}
于 2013-09-12T07:19:19.603 回答
1

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

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

这应该可以解决问题。

于 2016-01-21T10:12:26.340 回答