目前,我的MySQL数据库中有2个结果具有相同的user_id,并且我想在html table中使用PDO回显所有内容,但每次仅显示1个结果,而并非全部。

码:

<?php

$querytest = "SELECT o.output_valu, p.amount, p.amount_all, " .
             "p.order_id, p.datetime " .
             "FROM allusers a inner join order_history o " .
             "ON a.account_number = o.account_number " .
             "INNER JOIN paymentall p " .
             "ON o.output_vl_id = p.output_vl_id " .
             "WHERE a.account_number =:account_num " .
             "ORDER BY p.datetime ";
             $statementtest = $conn->prepare($queryoutgo);
             $statementtest->bindParam(':account_num', $account_num);
             $statementtest->execute();
             $test_result = $statementtest->fetchAll();


foreach($test_result as $row)
{
$outputtest = $row['output_valu'];
}
 ?>
<table>
  <tr>
    <th>Test</th>
  </tr>
  <tr>
    <td> <?php echo $outputtest;   ?> </td>
  </tr>
</table>


使用print_r($test_result);可以在results中显示我的2 array,但是为什么不使用我的代码?
我过去一直使用mysqli而不是PDO,也许这里有人可以帮助我:)

最佳答案

在您的foreach块中,您每次迭代都会覆盖$outputtest。这意味着将仅显示最后的结果。根据是要在单独的行上显示每个结果,还是要在一个单元格中将所有结果一起显示,应在foreach中创建单元格或将所有结果连接在一起。

编辑:
我认为您想要的是:


$querytest = "SELECT o.output_valu, p.amount, p.amount_all, " .
             "p.order_id, p.datetime " .
             "FROM allusers a inner join order_history o " .
             "ON a.account_number = o.account_number " .
             "INNER JOIN paymentall p " .
             "ON o.output_vl_id = p.output_vl_id " .
             "WHERE a.account_number =:account_num " .
             "ORDER BY p.datetime ";
             $statementtest = $conn->prepare($queryoutgo);
             $statementtest->bindParam(':account_num', $account_num);
             $statementtest->execute();
             $test_result = $statementtest->fetchAll();

?>
<table>
  <tr>
    <th>Test</th>
  </tr>
  <?php foreach($test_result as $row) { ?>
    <tr><td><?= $row['output_valu']; ?></td></tr>
  <?php } ?>
</table>

09-30 16:52
查看更多