目前,我的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>