【问题标题】:Foreach(){} stops after 1st rowForeach(){} 在第一行后停止
【发布时间】:2016-07-28 11:58:34
【问题描述】:

我只是想遍历我的数据库,但我只得到第一行。 这是我的数据库 PHP:

database.class.php:

<?php
     $pdo = new PDO('mysql:host=localhost; dbname=testing070416', 'root', 'root1');
     $statement = $pdo->query("SELECT * FROM users");
     $rows = $statement->fetch(PDO::FETCH_ASSOC);
     var_dump($rows);
?>

还有index.php

<?php include ('database.class.php');?>
   <table border="1">
      <?php foreach ($rows as $value=>$key ){
               echo '<tr><th style="color: red;">'.$value.'</th>';
               echo '<td>'.$key.'</td></tr>';
            }
      ?>

结果:

应该还有 4 个 ID 可以循环。

谢谢!

【问题讨论】:

标签: php loops pdo foreach


【解决方案1】:

使用fetchAll 而不是fetch

改变

$rows = $statement->fetch(PDO::FETCH_ASSOC);

进入

$rows = $statement->fetchAll(PDO::FETCH_ASSOC);

然后为您的index.php编码

<table border="1">
<?php
for($i = 0; $i == count($rows); $i++)
{
    foreach($rows[$i] as $value=>$key )
    {
        echo '<tr><th style="color: red;">'.$value.'</th>';
        echo '<td>'.$key.'</td></tr>';
    }
}
?>

fetchfetchAll 之间的区别

fetch 实际上是从结果集中获取下一行。

fetchAll 返回一个包含所有结果集行的数组。

【讨论】:

  • Salam Aleikum Hassaan,代码已更改并正在运行,但单元格为空:i.imgur.com/x9zrlT3.png
  • Walikum Salam,我已经更新了我的答案,但代码未经测试。如果它不适合你,请告诉我。
【解决方案2】:

使用 fetchAll 而不是 fetch 来获取所有结果。

变化:

$rows = $statement-&gt;fetch(PDO::FETCH_ASSOC);

收件人:

$rows = $statement-&gt;fetchAll(PDO::FETCH_ASSOC);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    相关资源
    最近更新 更多