PDO - показывает только 1 результат в таблице, не все с одинаковым идентификатором - PullRequest
1 голос
/ 08 января 2020

У меня на данный момент 2 результата в моей MySQL базе данных с таким же 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); он показывает мои 2 results в array, но почему бы не с моим кодом? Я всегда работал с mysqli, а не с PDO в прошлом, может быть, кто-то здесь может мне помочь:)

1 Ответ

0 голосов
/ 08 января 2020

В вашем блоке 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...