mysql单返回值

时间:2011-03-01 11:12:00

标签: php mysql

我有一个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'];
 }

或者第一次以某种方式删除数组???

他们是更好的方法吗?

6 个答案:

答案 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)

答案 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会在每次调用时增加背景光标,所以如果你调用它两次就不会给你相同的行。

要清楚地了解这一点,请阅读有关逐行读取文件的内容。