【问题标题】:PHP using multiple while loop retrieve only 1 rowPHP使用多个while循环仅检索1行
【发布时间】:2016-12-28 01:26:10
【问题描述】:

目前,我的计划是在用户名旁边添加一个性别图标。问题是即使表中有1条以上的表记录,它也只显示1行,有些记录突然消失了。这是它的样子:

我正在使用的代码:

$pdo = new PDO('connection');  
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt1 = $pdo->prepare("SELECT id, user_id, user, bid, date
FROM auction_bids ORDER BY date DESC");  
$stmt2 = $pdo->prepare("SELECT user_id, user, bid, date
FROM auction_bids ORDER BY date DESC LIMIT 30");
$stmt11 = $pdo->prepare("SELECT pol FROM tb_users WHERE id = :user_id");

$stmt2->execute();
$r1 = $stmt1->fetch(PDO::FETCH_ASSOC);
$stmt11->execute(array(':user_id' => $r1['user_id']));

$id1 = $r1['id'];
echo '<table>';
while ($r1 = $stmt2->fetch(PDO::FETCH_ASSOC) && $r2 = $stmt11- >fetch(PDO::FETCH_ASSOC)) {
  echo '<tr>
        <td>' . $id1 . '</td>
        <td><img height="16" width="16" alt="gender icon" src
                ="../images/' . ($r2['pol'] == 1 ? 'male.png' : 'female.png') . '" />
        ' . $r1['user'] . '</td>
        <td class="border-right">' . $r10['level'] . '</td>
        <td>' . $r1['bid'] . ' FA</td>
        <td><img height="16" width="16" alt="calendar" src
                ="../images/calendar.png" />
            ' . date($dateFormatBids, strtotime($r1['date'])) . '</td>
        </tr>
  ';
  $id1--;
}
echo '<table>

使用没有$r2while ($r1 = $stmt2-&gt;fetch(PDO::FETCH_ASSOC)) {..} 循环,它可以工作(除了性别颜色相同,测试它应该是红色,对于Lukas,应该是蓝色):

如果你有什么需要,请说。我对 PHP 和 PDO 很陌生。

【问题讨论】:

  • &amp;&amp;改成||

标签: php mysql pdo while-loop


【解决方案1】:

从行:$stmt11-&gt;execute(array(':user_id' =&gt; $r1['user_id'])); 你得到一条记录,所以 while 循环打印单行。

查询如下:

$stmt2 = $pdo->prepare("SELECT tu.pol, user_id, user, bid, date 
FROM auction_bids ab left join tb_users tu on ab.user_id = tu.id
ORDER BY date DESC LIMIT 30");

现在:

while ($r1 = $stmt2->fetch(PDO::FETCH_ASSOC){
    //rest of the code should work... user $r1['pol'] instead of $r2
}

【讨论】:

    【解决方案2】:

    检查该链接以了解 while 循环: http://www.w3schools.com/js/js_loop_while.asp

    你遇到的问题应该是 TRUE,并且你 ($r1 && $r2) = TRUE 只有当两个变量都为 TRUE 时,$r2 第一次为 TRUE,第二次都为 FALSE。

    您应该只循环 $r1 并在循环内调用 $r1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 2014-11-29
      • 2013-06-07
      • 2014-04-23
      • 2019-02-01
      • 2011-08-09
      相关资源
      最近更新 更多