2016-03-08 121 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]等等。