使用PHP循环MySQL中的列字段

时间:2014-10-03 05:57:13

标签: php mysql sql

我正在网页上建立食物菜单。这个菜单包括葡萄酒和啤酒等饮品。目前,它们按红色或白色和葡萄酒的类型(Pinot Grigio,Chardonnay等)分类。我已将这些葡萄酒项目输入MySQL数据库,其中包含以下列/值:

id(int),name(varchar),type(varchar),price_bottle(decimal),price_glass(decimal),red(bool)

我的当前代码:

$result = mysql_query("SELECT * FROM Wines WHERE type = 'Pinot Grigio' "); 


while($row = mysql_fetch_array($result)) {
    $name = $row['name'];
    $type = $row['type'];
    $price_bottle = $row['price_bottle'];
    $price_glass = $row['price_glass'];
  echo 
  "<div class='foodmenu-item'>
        <div class='foodmenu-text'>
          <h2>" . $type . "</h2>
          <p>" . $name . "</p>
        </div>
        <div class='foodmenu-price'>
            <p>$" . $price_bottle . " / " . $price_glass . "</p>
        </div>
    </div>";
}

如果我想单独展示每个项目,但我想按“葡萄酒类型”(Pinot Grigio,Chardonnay等)进行分组,然后在“类型”下列出葡萄酒的每个名称,那么这很好我的CSS看起来整洁有序。

例如:

PINOT GRIGIO

Nobllissimo

里夫

CHARDONNAY

破碎机

博格

使用“GROUP BY”SQL语法仅显示当前代码的第一个结果。我做出foreach语句的所有尝试都会导致错误,我不知道下一步该转向何处。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

  1. 好的方式不是简单地使用&#34; *&#34;,而是列表 (原因:只选择真正想要使用的数据 - 性能更好,如果你以后想要在表格中添加或更改列,那么你的生活会更简单;-))

  2. 我认为你可以尝试,从小表中选择所有,只对数据进行排序 - 类型和名称,然后在循环中对菜单的类型进行分组。然后,您只需要向数据库发送一个查询并拥有所有这些查询。假设Wines只是小表,因为select都消耗了一个内存。

    SELECT type,name,price_bottle,price_glass 来自葡萄酒 ORDER BY类型,名称;

答案 1 :(得分:-1)

您是否尝试使用嵌套的2个查询?像这样:

    $result = mysql_query("SELECT DISTINCT(type) FROM Wines ORDER BY type"); 

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

    $type = $row['type'];

  echo "<div class='foodmenu-item'>
        <h2>" . $type . "</h2>";

          $result2 = mysql_query("SELECT * FROM Wines WHERE type = '".type."' ");

          while($row2 = mysql_fetch_array($result2)) {
            $name = $row2['name'];
            $price_bottle = $row2['price_bottle'];
            $price_glass = $row2['price_glass'];
            echo "
                <div class='foodmenu-text'>
                <p>" . $name . "</p>
                </div>
                <div class='foodmenu-price'>
                    <p>$" . $price_bottle . " / " . $price_glass . "</p>
                </div>";
          }
  echo "</div>";
}