Php 将用于ouptut的mysql数据格式化为表

Php 将用于ouptut的mysql数据格式化为表,php,mysql,arrays,Php,Mysql,Arrays,根据今天早些时候的一个问题,给出这个答案是为了将数据读取到一个数组中,并将其分离以打印车辆类型,然后打印每辆车的一些数据 <?php $sql = "SELECT * FROM apparatus ORDER BY vehicleType"; $getSQL = mysql_query($sql); // transform the result set: $data = array(); while ($row = mysql_fetch_assoc($getSQL)) { $data[

根据今天早些时候的一个问题,给出这个答案是为了将数据读取到一个数组中,并将其分离以打印车辆类型,然后打印每辆车的一些数据

<?php
$sql = "SELECT * FROM apparatus ORDER BY vehicleType";
$getSQL = mysql_query($sql);
// transform the result set:
$data = array();
while ($row = mysql_fetch_assoc($getSQL)) {
$data[$row['vehicleType']][] = $row;    
}
?>
<?php foreach ($data as $type => $rows): ?>
<h2><?php echo $type?></h2>
<ul>
  <?php foreach ($rows as $vehicleData):?>
    <li><?php echo $vehicleData['name'];?></li>
  <?php endforeach ?>
  </ul>
<?php endforeach ?>


这对于我想要做的几乎是完美的,但是在进入第二个foreach循环之前,我需要打印出数据库中的两列,即ford和mondeo。我试过打印$rows['model']和我能想到的所有其他组合,但都不起作用。非常感谢您的任何帮助

我对您的问题感到有点困惑,但是SQL语句中的SELECT*表示数据库中的每一列都应该作为$row数组中的键=>值对出现。因此,如果需要另一个“列”,在这里输出到HTML列表元素
  • ,只需将该列名作为数组键进行回显(注意:不是“打印”)。因此,如果您需要在名为“model”的列中找到汽车列的类型,您可以这样做:

    <?php
    $sql = "SELECT * FROM apparatus ORDER BY vehicleType";
    $getSQL = mysql_query($sql);
    // transform the result set:
    $data = array();
    while ($row = mysql_fetch_assoc($getSQL)) {
    $data[$row['vehicleType']][] = $row;    
    }
    ?>
    <?php foreach ($data as $type => $rows): ?>
    <h2><?php echo $type?></h2>
    <ul>
      <?php foreach ($rows as $vehicleData):?>
        <li><?php echo $vehicleData['name'];?></li>
        <li><?php echo $vehicleData['model'];?></li>
      <?php endforeach ?>
      </ul>
    <?php endforeach ?>
    
    
    
    编辑:我仍然不清楚你的问题,但是如果每辆车都有相同的车型,而你只是想在循环所有结果之前抓住它一次,我猜这样做可以:

    <?php
    // Set up a SQL query to grab one row
    $query_to_grab_only_vehicle_type = "SELECT vehicleType FROM apparatus WHERE 1 LIMIT 0,1";
    // Fetch that row and turn it into an array
    $vehicle_type_array = mysql_fetch_array(mysql_query($query_to_grab_only_vehicle_type));
    // Initialize a variable with the array value that came from the vehicleType column
    $vehicle_type = $vehicle_type_array['vehicleType'];
    // You could uncomment and use the following to echo out the variable
    // echo "Vehicle type: $vehicle_type";
    
    $sql = "SELECT * FROM apparatus ORDER BY vehicleType";
    $getSQL = mysql_query($sql);
    // transform the result set:
    $data = array();
    while ($row = mysql_fetch_assoc($getSQL)) {
    $data[$row['vehicleType']][] = $row;    
    }
    ?>
    <?php foreach ($data as $type => $rows): ?>
    <h2><?php echo $type?></h2>
    <ul>
      <?php foreach ($rows as $vehicleData):?>
        <li><?php echo $vehicleData['name'];?></li>
        <li><?php echo $vehicleData['model'];?></li>
      <?php endforeach ?>
      </ul>
    <?php endforeach ?>
    
    
    

    难道您不知道
    $vehicleData
    数组包含机器详细信息吗?因此,模型应该存储在这个数组中,而不是$rowsno中。我没有意识到这一点。你是说一个单独的数组吗?我真的很难理解数组,所以任何解释都值得赞赏。谢谢,是的,数据是存在的,我可以按照你的建议进行回音,但这会给我很多回音的模型。我在循环之前需要它,所以它只回显一次,直到$rows as vehicleData它不存在。while循环给你“许多回显”,所以听起来你可能只想初始化数组一次。在这种情况下,上面的while调用:“$singleRow=mysql\u fetch\u array($getSQL)”,它将只初始化一个数组,而不是为行中的每个项目初始化数组。您可能希望将其与限制0,1一起调用,这样您就不会提取任何不需要的行。while循环提取我需要的所有数据,即福特蒙迪欧、蓝色硬顶、福特蒙迪欧、红色软顶,给出的答案为>福特、蓝色硬顶、福特、红色软顶。我需要的是福特蒙迪欧,蓝色硬顶,红色软顶。你从哪里买到“福特蒙迪欧”。。。vehicleData['vehicleType']?抱歉,我试图将问题与其他人的问题联系起来,从而混淆了问题。我认为福特蒙迪欧是一款车型。