У меня есть таблица mysql с заказами. Я пытаюсь просмотреть таблицу заказов и выбрать отдельные заказы клиентов в соответствии с их идентификаторами пользователя и отобразить заказы в их учетных записях клиентов. Однако мой код ниже просто печатает первую строку и повторяет ее бесконечно, каждый раз блокируя мой браузер.
что с этим не так и как мне это решить
<?php
$records = $conn->prepare('SELECT * FROM orders WHERE user_id= :id');
$records-> bindParam(':id', $_SESSION['user_id']);
$records->execute();
$results=$records->fetch(PDO::FETCH_ASSOC);
$i=0;
while($i<=$results):
$i++;
?>
<h3>Your Orders</h3>
<table >
<tr >
<th>Order Number</th><th>Academic Level</th><th>Order Details</th>Manage Order</th>
</tr>
<tr>
<td>#SJ<?=$results['id']; ?> </td><td><?=$results['academic_level']; ?></td><td ><?=$results['details']; ?></td>
</tr>
</table>
<?php
endwhile;
?>
Возможный дубликат PHP - цикл выборки PDO






Удалите весь код, связанный с $i. Просто переместите свой оператор fetch в в то время как условие, как показано ниже:
while( $results=$records->fetch(PDO::FETCH_ASSOC))
@PeterFlanders рады помочь. Вы можете принять это как ответ, а также проголосовать :) Спасибо
Вам нужно включить html-код в цикл while, потому что вы хотите отображать все заказы.
Я использую этот метод, попробуйте это.
Начать, находясь в первом разделе php
<?php
$username = $_SESSION['username'];
$sql = $db->prepare("SELECT * FROM tableName WHERE username = '$username' ");
$sql->execute();
while($results=$sql->fetch(PDO::FETCH_ASSOC)){
?>
После этого идет html-раздел:
<h3>Your Orders</h3>
<table >
<tr >
<th>Order Number</th><th>Academic Level</th><th>Order Details</th>Manage Order</th>
</tr>
<tr>
<td><?php echo $results['id']; ?> </td><td><?php echo $results['academic_level']; ?></td><td ><?php echo $results['details']; ?></td>
</tr>
</table>
и вот финал
<?php
}
?>
$records->fetch(PDO::FETCH_ASSOC)получит только одну (первую) строку.