使用PHP/MySQL,如何按每个组显示所有组项?

使用PHP/MySQL,如何按每个组显示所有组项?,php,mysql,Php,Mysql,下面的代码一次列出每行的每个caritem——在每行上显示carname:echo mysql_result$result,$i,‘carname’> 与其在每行上显示carname,我如何使它按carname将CarItem分组,然后在顶部显示carname一次,并在下面显示与该carname关联的每个CarItem。。。然后它将转到下一个carname,对项目进行分组 $result = mysql_query("SELECT * FROM cars LEFT JOIN carite

下面的代码一次列出每行的每个caritem——在每行上显示carname:echo mysql_result$result,$i,‘carname’>

与其在每行上显示carname,我如何使它按carname将CarItem分组,然后在顶部显示carname一次,并在下面显示与该carname关联的每个CarItem。。。然后它将转到下一个carname,对项目进行分组

    $result = mysql_query("SELECT * FROM cars LEFT JOIN caritems ON cars.carid = caritems.carid ORDER BY cars.carsortorder ASC");

    $total_results = mysql_num_rows($result);       


    for ($i = 0; $i < 1500; $i++)

    {

    if ($i == $total_results) { break; }

    $rowid = mysql_result($result, $i, 'caritems.caritemid'); 

    echo mysql_result($result, $i, 'carname') . "&nbsp; > ";

    echo "<div class='carved' />";

    echo "<strong class='caritemheader'>" . mysql_result($result, $i, 'caritemname') . "&nbsp;" . mysql_result($result, $i, 'caritemprice') . "</strong><br />";

    /* CHECK IF BLOB EXISTS AND IF SO DISPLAY IMAGE */

    if (strlen(mysql_result($result, $i, 'caritempicture'))>0) { echo '<br />' . '<img src="data:image/png;base64,' . base64_encode(mysql_result($result, $i, 'caritempicture')) . '"/>' . '<br />'; }

    echo mysql_result($result, $i, 'caritemdescription') . "<br /><br />";

    echo "</div>";

    }

您可以首先选择不同的龋齿,如下所示:

select distinct carid from cars
select * from caritems where carid=$carid
然后在for循环中分别查询每辆车的项目,如下所示:

select distinct carid from cars
select * from caritems where carid=$carid

这里$carid来自第一个查询

这是一个使用PDO的基本结构,并像其他人所建议的那样捕获独特的肉豆蔻。我没有集成所有现有的代码

try {       
    $db = new PDO("mysql:host=localhost;charset=utf8", "root", "root");
    $cmd = $db->prepare("
        SELECT * FROM cars 
        LEFT JOIN caritems ON cars.carid = caritems.carid 
        ORDER BY cars.carsortorder ASC;
    ");
    if ($cmd->execute()) {
        $carname = "";
        while ($row = $cmd->fetch(PDO::FETCH_ASSOC)) {
            if ($carname != $row['carname']) {
                echo $row['carname'];
            }
            echo /* everything else */
            $carname = $row['carname'];
        }
    }
} catch (Exception $e) { echo $e->getMessage(); return; }

请注意,它们已不再维护,并且是。而是学习,并使用或。将帮助您做出决定。您必须回显carname并存储该信息。然后在每次循环中检查它,如果它发生了变化,您会呼出新的一个。@JayBlanchard。只要您按车排序。carsortorder将车名分组。当您可以一次获取所有数据时,为什么要反复运行查询?如果有几十个或数百个carnames,这可能会是一个问题。应避免多次调用数据库。您是否可以利用我的代码演示您的解决方案?这将是非常有帮助的。否则按carid asc排序,然后在carid相等的情况下,将项目作为第一辆车进行回显。当carid发生变化时,意味着新的汽车项目已经开始,因此您可以单独启动下一个汽车项目。您是否可以利用我的代码来演示您的解决方案?这将非常有帮助。