0

下面的代码显示第 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); 
}
4

5 回答 5

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)
}
于 2013-09-16T09:54:00.523 回答
1

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

0=> column,
column=>column

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

mysql_fetch_array($result, MYSQL_ASSOC);
于 2013-09-16T09:59:10.327 回答
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'];
于 2013-09-16T09:57:13.320 回答
0

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

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

于 2013-09-16T10:00:16.460 回答
0

group by像这样使用

$data =mysql_query("SELECT * FROM item WHERE dcid IN('116','118') group by dcid")
       or die(mysql_error());
于 2013-09-16T10:45:21.177 回答