2016-03-08 94 views
0

我做了一个while循环来显示我的表卡中的数据。 的问题是,它并没有显示出表的Php - 虽然循环数据MySQL

$reponse = $bdd->query('SELECT * FROM cartes'); 
$donnees = $reponse->fetch(); 

while ($donnees = $reponse->fetch()) { 
?> 

    <p> 
    <strong>Carte: </strong> <br /><br /> 
    <u>ID:</u> <?php echo $donnees['ID']; ?><br /> 
    <u>Propriétaire:</u> <?php echo $donnees['nom']; ?><br /> 
    </p> 

    <?php 
} 

$reponse->closeCursor(); 
?> 

的第一排我的表:

CREATE TABLE IF NOT EXISTS `cartes` (
`ID` int(10) unsigned NOT NULL AUTO_INCREMENT, 
`nom` varchar(255) NOT NULL, 
PRIMARY KEY (ID) 
) ENGINE=INNODB DEFAULT CHARSET=latin1 AUTO_INCREMENT=51; 

感谢

+3

删除此行$ donnees = $ reponse-> fetch(); –

回答

1
$reponse = $bdd->query('SELECT * FROM cartes'); 
$donnees = $reponse->fetch(); 

$reponse->fetch()将从响应取第一行。所以何时在while循环中$reponse->fetch()它将从第二行开始。因此您需要在循环外部删除$donnees = $reponse->fetch();

2

@Goudea Elalfy在评论中指出,“违规”代码行是$donnees = $reponse->fetch();

这样做的原因是因为你已经获取的数据如下

$reponse = $bdd->query('SELECT * FROM cartes'); //Fetches the data 

后,您再从返回的结果取单行。

$donnees = $reponse->fetch(); //Fetches the first row from the result set 

然后你在while循环再次获取数据:

while ($donnees = $reponse->fetch()) { // starts from the second row in the result set. 

但是,因为你已经都准备好问的结果集返回从结果集一次,响应单行在while循环中返回第二组结果/数据,并且每次循环访问响应时都会获得下一组数据。

你可以把它看作一个数组,第一次调用结果集时你第二次调用结果集$response[0]你得到了$response[1]等等。