2011-06-22 111 views
1

我想看看在mysql结果中是否有具有某些值的行,例如结果中的任何一行是否有product_category = 25 我可以在不使用mysql_fetch_array的情况下做到这一点,如果我不能,那么为什么我不能使用mysql_fetch_array两次的结果是一样的吗? 有没有解决方法?我可以将结果复制到另一个变量并运行mysql_fetch_array吗?我试过,但副本更改为原始更改(如mysql_fetch_array通过它)。PHP如何检查mysql的结果值?

+0

也许您应该考虑将限制作为查询的一部分。但很难肯定地说,因为你没有提供任何细节或显示任何代码。 – Jon

+0

我认为你只需要通过把WHERE条件限制在你的查询中,即:** WHERE product_category = 25 ** ..这将是batter solution.thx。 – Chandresh

回答

0

不知道你的代码,我需要猜测。

mysql-result-resource是一个指向具体结果的游标。这意味着,您只能直接访问当前条目。您必须迭代结果(例如,通过mysql_fetch_array())才能访问每个结果项目。如果你不能调用它两次,你可能只有一个单个项目作为查询的结果,因为你可以多次调用它,但是如果你没有更多的行要从资源中检索,它总是会返回false

1

您不能使用mysql_fetch_array两次(并获取同一行),因为它会将指针前进到结果中的行。 (因此,如果您检索多行,第一次调用将获取第一行,第二次将获取第二行。)

正如Shakti已经指出的那样,使用循环遍历所有行,然后测试期望值:

while ($row = mysql_fetch_array($result)) { 
    if ($row['product_category'] == 25) { /* execute your code here */ } 
} 
+1

你可以取两次。你只需使用'mysql_data_seek()' – ariefbayu

+0

重置它的内部指针当然。但那不是他的问题,或者他正在尝试(或应该尝试)做的事情。 – enyo

+0

其实mysql_data_seek()正是我所需要的,谢谢 –