2016-04-07 53 views
-1

我只是想通过我的数据库循环,而我只得到第一行。 这是我的数据库PHP:Foreach(){}在第一行后停止

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循环。

谢谢!

+0

http://php.net/manual/en/pdostatement.fetch.php - http://php.net/manual/en/pdostatement.fetchall.php –

+2

[** RTM **:' - > fetch ()' - 从结果集中获取下一个**行**](http://php.net/manual/en/pdostatement.fetch.php)。如果你想多行使用['fetchAll'](http://php.net/manual/en/pdostatement.fetchall.php)或者在while循环中使用'fetch'。 – h2ooooooo

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

+0

Salam Aleikum Hassaan,代码已经更改,正在运行但空单元格:i.imgur.com/x9zrlT3.png –

+0

Walikum Salam,我更新了我的答案,但代码未经测试。让我知道,如果它不适合你。 – Hassaan

+0

它工作出色。谢谢! –

2

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

变化:

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

要:

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