【问题标题】:PHP and Mysql while loopPHP和Mysql的while循环
【发布时间】:2019-02-01 05:54:41
【问题描述】:

我有一个带有订单的 mysql 表。我正在尝试遍历订单表并根据其用户 ID 选择单个客户订单并在其客户帐户上显示订单。但是,我下面的代码只是打印第一行并无休止地重复它,每次都会阻塞我的浏览器。

这有什么问题以及如何解决它

<?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;
?>

【问题讨论】:

  • $records-&gt;fetch(PDO::FETCH_ASSOC) 将只获取一个(第一)行。
  • PHP - PDO fetch loop的可能重复

标签: php html css mysql session


【解决方案1】:

您需要在 while 循环中包含 html 代码,因为您要显示所有订单。

我正在使用这个方法,试试这个。

在第一个 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
}
?>

【讨论】:

    【解决方案2】:

    删除所有$i相关代码。只需将您的 fetch 语句移至 while 条件,如下所示:

    while( $results=$records->fetch(PDO::FETCH_ASSOC))
    

    【讨论】:

    • @PeterFlanders 乐于提供帮助。您可以接受这个作为答案,也可以投票:)谢谢
    猜你喜欢
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    • 2012-11-11
    相关资源
    最近更新 更多