SQL查询仅显示第一个结果

时间:2013-09-16 09:50:07

标签: php mysql sql

下面的代码显示行116两次,它不会显示第118行。任何想法如何解决这个问题?

$data = mysql_query("SELECT * FROM item WHERE dcid IN('116','118')")
        or die(mysql_error()); 
$info = mysql_fetch_array($data); 

foreach ($info as $item) {
  echo($item); 
}

5 个答案:

答案 0 :(得分:2)

mysql_fetch_array只提取一行。通常,它在while循环中用于循环遍历所有结果。

继续上面的例子:

$data = mysql_query("SELECT * FROM item WHERE dcid IN('116','118')") or die(mysql_error()); 
while ($item = mysql_fetch_array($data)) {
    echo($item)
}

答案 1 :(得分:1)

您的查询必须为:

$data = mysql_query("SELECT * FROM item WHERE dcid IN('116','118')") or die(mysql_error()); 
while ($item = mysql_fetch_array($data)) {
    echo $item['column_name1'];
}   echo $item['column_name2'];

答案 2 :(得分:1)

mysql_fetch_array返回像这样的数组中的单行,其中包含关联数组和行的常规数字键控结果集。

0=> column,
column=>column

这就是为什么它在foreach中返回两次。使用它就像这样

mysql_fetch_array($result, MYSQL_ASSOC);

答案 3 :(得分:0)

此外,如果dcid是您的密钥并且它是自动增量(行的ID),您也可以使用LIMIT 116,118。

了解更多信息:http://php.about.com/od/mysqlcommands/g/Limit_sql.htm

答案 4 :(得分:0)

使用group by作为

$data =mysql_query("SELECT * FROM item WHERE dcid IN('116','118') group by dcid")
       or die(mysql_error());