【问题标题】:How to print out two queries in one table?如何在一张表中打印出两个查询?
【发布时间】:2020-11-06 02:21:57
【问题描述】:

我在一个表单中有两个查询。我打印出这样的结果:

<table>
  <thead>
    <tr>
      <th>Heading1</th>
      <th>Heading2</th>
      <th>Heading3</th>
      <th>Heading4</th>
    </tr>
  </thead>
  <tbody>
  <?php foreach ($result1 as $row1) : ?>
    <tr>
      <td><?php echo escape($row1["Column1"]); ?></td>
      <td><?php echo escape($row1["Column2"]); ?></td>
      <td><?php echo escape($row1["Column3"]); ?></td>
        <?php endforeach; ?> </tr>


       <tr> <?php foreach ($result2 as $row2) : ?>
            <td><?php echo escape($row2["Column4"]); ?></td>
    </tr>
  <?php endforeach; ?>
  </tbody>
</table>

我想在不同的列中显示每个结果。但是第二个查询(“Column4”)的结果似乎出现在第二个表(??)中。它没有在其他列旁边回显,而是在下面: Current Output

我该如何解决这个问题?

【问题讨论】:

  • query2 中有多少行对应于 query1 中的每一行?让我感到震惊的是,可以组合查询,这会使事情变得更清楚,尽管如果没有看到查询就无法确定。
  • $sql1 = "SELECT * FROM table1 LEFT JOIN table2 ON table1.SubTerm = table2.name"; $sql2 = "SELECT * FROM table1 LEFT JOIN table2 ON table1.GenericTerm = table2.name";他们都在查询相同的表,但连接方式不同。 Table1 仅由 ID 组成(因为两列都是同一个表的外键),Table2 包含 ID 的相应名称。
  • 那么,为什么不将两个 JOIN 放在同一个查询中呢? “select * from table1 left join table2 on table1.subterm = table2.name left join table2 on table1.genericterm = table2.name”或类似的东西。我希望你加入 table2.id 而不是 table2.name,但我不知道你的列名。

标签: php html sql pdo


【解决方案1】:

试试这个修复...

我已经删除了导致它在下一行回显的东西

现在这将起作用...

 <table>
  <thead>
    <tr>
      <th>Heading1</th>
      <th>Heading2</th>
      <th>Heading3</th>
      <th>Heading4</th>
    </tr>
  </thead>
  <tbody>
  <?php foreach ($result1 as $row1) : ?>
    <tr>
      <td><?php echo escape($row1["Column1"]); ?></td>
      <td><?php echo escape($row1["Column2"]); ?></td>
      <td><?php echo escape($row1["Column3"]); ?></td>
        <?php endforeach; ?> 


        <?php foreach ($result2 as $row2) : ?>
            <td><?php echo escape($row2["Column4"]); ?></td>
    </tr>
  <?php endforeach; ?>
  </tbody>
</table>

【讨论】:

  • 非常感谢!出于某种原因,除了第 4 列的第一行以某种方式位于其他列的最后一行之外,它没有任何改变(我不知道如何正确解释,但基本上它只是向上移动了一行)我不知道为什么会这样
【解决方案2】:

你必须改变

<?php endforeach; ?> </tr>


       <tr> <?php foreach ($result2 as $row2) : ?>

进入

 <?php endforeach; ?> 
 <?php foreach ($result2 as $row2) : ?>

您已开始另一行(“tr”标签关闭并重新打开)。

【讨论】:

  • 哦,你是对的!但是它没有改变任何东西,除了第 4 列的第一行不知何故在其他列的最后一行(我不知道如何正确解释,但基本上它只是向上移动了一行)我不知道为什么是
  • 我从您的图片中了解到:P 无论如何,如果您从查询中获得更多结果,那么您将只有一行 N+M 列...
猜你喜欢
  • 2021-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多