我有一个mysql查询:
$a=mysql_query("SELECT id FROM table1 WHERE p2='fruit' LIMIT 1");
这只会返回一个结果或没有结果。
我正在尝试先计算结果,如果是1,则将返回的id传递给变量。
问题:如果我这样做
$results=count(mysql_fetch_assoc($a));
要计算返回的行数,我还能稍后再做吗
while($row = mysql_fetch_array($a)){
$id=$row['id'];
}
或者第一次以某种方式删除数组???
他们是更好的方法吗?
答案 0 :(得分:2)
$results=count(mysql_fetch_assoc($a));
不计算行数,因为mysql_fetch_assoc
返回一行。我相信你正在寻找mysql_num_rows
:
$results = mysql_num_rows($a);
答案 1 :(得分:2)
如果有一行或null,你真的不需要做任何事情 考虑下面的代码,如果有1行被提取,它将设置id值,否则它将为null
$id=''
while($row = mysql_fetch_array($a)){
$id=$row['id'];
}
不需要计数。
答案 2 :(得分:1)
$num_rows = mysql_num_rows($a);
然后,您可以对此执行IF语句,然后在获取的数组上执行while循环
答案 3 :(得分:1)
你试过mysql_num_rows
??
答案 4 :(得分:0)
不可以,因为每次调用mysql_fetch_assoc()
都会加载一个新行(如果有的话)。你确实可以一次分配两个变量:
$results=count($row = mysql_fetch_assoc($a));
但是
但是mysql_fetch_assoc($a))
会返回false
,而count(false)
的结果是1
,这不会告诉你任何事情。此外,如果没有行,您真正需要的是$row = mysql_fetch_assoc($a)
和测试if ($row) {...}
。
答案 5 :(得分:0)
使用时会发生什么:
while($row = mysql_fetch_array($a)){
$id=$row['id'];
}
就像读取文件一样,每次调用mysql_fetch_array($ a)时,下一行都会被解析,直到它到达文件的末尾。某种光标在后台是已知的。意思是如果你想手工输入 // backgroundCursor = 0 $ row = mysql_fetch_array($ a) // backgroundCursor = 1 $ row = mysql_fetch_array($ a) // backgroundCursor = 2 $ row = mysql_fetch_array($ a) // backgroundCursor = 3
while指令只是自动化的东西。 mysql_fetch_array会在每次调用时增加背景光标,所以如果你调用它两次就不会给你相同的行。
要清楚地了解这一点,请阅读有关逐行读取文件的内容。