Foreach(){}在第一行

时间:2016-04-07 14:17:31

标签: php loops pdo foreach

我只是试图遍历我的数据库而我只获得第一行。 这是我的数据库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>';
            }
      ?>

结果:

enter image description here

应该再循环4个ID。

谢谢!

2 个答案:

答案 0 :(得分:3)

使用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返回一个包含所有结果集行的数组。

答案 1 :(得分:2)

使用fetchAll代替fetch来获取所有结果。

变化:

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

要:

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