0

以下のコードは行 116 を 2 回表示しますが、行 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 で 2 回返される理由です。このように使用します。

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

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 に答える
0

また、dcid がキーで、自動インクリメント (行の ID) の場合は、LIMIT 116,118 も使用できます。

詳細情報: http://php.about.com/od/mysqlcommands/g/Limit_sql.htm

于 2013-09-16T10:00:16.460 に答える