为什么mysql查询没有返回正确的数量

时间:2014-01-21 11:14:16

标签: php mysql sql

此查询不断返回2个条目,我无法理解原因。

我有一个数据库,将我的成员保存在一个名为members的表中。目前它有5条记录,因为它只是用于测试。当我使用以下查询时,我得到两个结果,即我登录到网站的当前ID,结果为空白。

$memarray = mysql_query("SELECT id FROM members") or die ("unable to get info");
$fArray = mysql_fetch_array($memarray);

echo count($fArray);    //shows 2
echo $fArray[0];        //shows '102' my current id
echo $fArray[1];        //shows nothing

4 个答案:

答案 0 :(得分:3)

mysql_fetch_array()在数组中存储一行。要检索所有行,您必须重复调用它。

while ($row = mysql_fetch_array($result))
{
    ...
}

要存储数组中的所有行,只需执行

$rows = array();
while ($row = mysql_fetch_array($result))
    $rows[] = $row;
然而,这是非常低效的。如果可能,您应该在while - 循环中处理您的数据。

答案 1 :(得分:0)

使用mysql_fetch_array($memarray),您可以从查询结果中获得第一行 该函数的默认第二个参数是“MYSQL_BOTH” 这意味着你得到[0 =>'someID','id'=>“someID”] 您可以改用“MYSQL_ASSOC” 见php manual

答案 2 :(得分:0)

mysql_fetch_array - 将结果行提取为关联数组,数字数组或两者 http://php.net/mysql_fetch_array

$memarray = mysql_query("SELECT id FROM members") or die ("unable to get info");
$fArray = mysql_fetch_array($memarray);
echo '<pre>';
print_r($fArray);

结果将是这样的事情:

Array ( [0] => 23 [id] => 23 )

显然是计数($ fArray)返回2

计算所有的回忆

$memarray = mysql_query("SELECT COUNT(id) as count FROM members") or die ("unable to get info");
$fArray = mysql_fetch_assoc($memarray);
echo $fArray['count'];

$memarray = mysql_query("SELECT id FROM members") or die ("unable to get info");
echo mysql_num_rows($memarray);

获取所有记录

while($row = mysql_fetch_assoc($memarray))
{
    print_r($row);
}

我还建议你看看这个通知:

  

警告自PHP 5.5.0起,此扩展程序已弃用,将来将被删除。相反,MySQLi或PDO_MySQL扩展   应该使用。另请参阅MySQL:选择API指南和相关的常见问题解答   欲获得更多信息。该功能的替代方案包括:   mysqli_fetch_array()PDOStatement :: fetch()

http://ir1.php.net/manual/en/mysqli-result.fetch-array.php http://ir1.php.net/manual/en/pdostatement.fetch.php

答案 3 :(得分:0)

使用此:

$memarray = mysqli_query("SELECT id FROM members") or die ("unable to get info");
while ($fArray = mysqli_fetch_array($memarray))
{
   echo $fArray["id"];
}