下面的代码显示第 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);
}
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)
}
您的查询必须为:
$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'];
mysql_fetch_array返回此类数组中的单行,该数组同时包含关联数组和行的常规数字键结果集。
0=> column,
column=>column
这就是为什么它在foreach中返回两次的原因。像这样使用它
mysql_fetch_array($result, MYSQL_ASSOC);
此外,如果 dcid 是您的键并且它是自动递增的(行的 ID),您也可以使用 LIMIT 116,118。
更多信息: http://php.about.com/od/mysqlcommands/g/Limit_sql.htm
这样使用group by
$data =mysql_query("SELECT * FROM item WHERE dcid IN('116','118') group by dcid")
or die(mysql_error());