即使mysql_fetch_array返回结果,mysql_num_rows也会返回零

时间:2012-03-07 11:44:22

标签: php mysql

我有一个简单的mysql查询检查数据库表'all_users'以查找在文本字段中输入的电子邮件。

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

在我的测试用例中,$email是something@yahoo.com,电子邮件存在于数据库表中。

当我这样做时:

$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'];时,它会正确地打印出'something@yahoo.com',但是当我echo $num;时,它就是0!

我在这里做错了什么?我做了一千次,但从来没有遇到过这个问题。

3 个答案:

答案 0 :(得分:1)

From http://php.net/manual/en/function.mysql-fetch-array.php - 返回与获取的行对应的数组,向前移动内部数据指针

因此,请更改顺序,即先使用mysql_num_rows,然后再执行mysql_fetch_array

答案 1 :(得分:1)

如果您颠倒语句的顺序,它将按预期工作。您正在检索资源之前的行询问它剩下多少行。由于您显然只找到一行,因此会生成0,因为您已经检索了该行。

如果你这样做,它应该有效:

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

答案 2 :(得分:0)

我认为不是因为您的mysqli_num_rows函数,请检查搜索查询是否有效,否则请使用trim(column_name)而不是简单地给出列。

对我有用...花了我两天时间进行验证?