2012-03-07 116 views
0

我有一个简单的mysql查询检查数据库表'all_users'的电子邮件是在文本字段中输入的。即使mysql_fetch_array返回结果mysql_num_rows返回零

该电子邮件位于名为$email的变量中。

在我的测试案例中,$email[email protected],电子邮件存在于数据库表中。

当我这样做:

$result=mysql_query("select * from all_users where email='$email' ") or die (mysql_error()); 
$row=mysql_fetch_array($result); 
$num=mysql_num_rows($result); 

$num为零,即使$row被发现。

所以当我做echo $row['email'];它正确打印出'[email protected]',但当我做echo $num;它是0!

我在这里做错了什么?我已经做了这一千次,但从未有过这个问题。

+0

很奇怪。将您的查询更改为'select * from all_users' 并将结果更新给我们。 – 2012-03-07 11:47:38

回答

1

http://php.net/manual/en/function.mysql-fetch-array.php - 返回对应于提取的行和移动内部数据指针提前

所以更改顺序的排列,即首先使用mysql_num_rows,然后才做mysql_fetch_array

+0

有道理,但我已经按照这个顺序完成了它,并且它工作,即使只有一行发现。无论如何,谢谢,现在工作。 – jovan 2012-03-07 11:52:00

1

如果颠倒声明的顺序,它将按照您的预期工作。您在之前从资源中检索该行,询问它剩下多少行。由于您显然只找到一行,因此您会检索到该行,因此结果为0

如果你这样做它应该工作:

$num = mysql_num_rows($result); 
$row = mysql_fetch_array($result);