2014-01-21 120 views
0

该查询不断返回2个条目,我无法弄清楚为什么。为什么mysql查询没有返回正确的数量

我有一个名为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 
+0

你能显示输出?并且使用'msqli_query'而不是'mysql_query' – user2936213

+0

添加上面的输出,谢谢 – Benjio

+0

不赞成使用'mysql_ *'做你自己的忙,并用'mysqli_ *'替换'mysql_ *'。 http://us3.php.net/manual/en/changelog.mysql.php – Jason

回答

3

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

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

要保存的所有行中的阵列,只需做

$rows = array(); 
while ($row = mysql_fetch_array($result)) 
    $rows[] = $row; 

然而,这是相当低效的。如果可能的话,你应该在while -loop内处理你的数据。

+0

谢谢。我可以问我怎样才能将每个值推入一个新的数组来保存所有的ID?谢谢 – Benjio

0

通过使用mysql_fetch_array($memarray),您将获得查询结果的第一行。
函数的默认第二个参数是“MYSQL_BOTH”。
这意味着你得到[0 =>'someID','id'=>“someID”]
你可以使用“MYSQL_ASSOC”来代替。
看到这个php manual

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) 

明显count($ fArray)return 2

计算所有recors

$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对象::获取()

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

0

使用此:

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