[英]Php - While loop data MySQL
我做了一个while循环来显示我的桌卡上的数据。 问题是它不显示表的第一行
$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;
谢谢
代码的“违规”行是$donnees = $reponse->fetch();
正如@Goudea Elalfy在评论中指出的那样。
这样做的原因是因为在您按以下方式获取数据之后
$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循环中返回SECOND组结果/数据,并且每次循环响应时,您都将获得下一个数据集。
您可以将其视为一个数组,第一次调用结果集将获得$response[0]
,第二次调用结果集将获得$response[1]
,依此类推。
$reponse = $bdd->query('SELECT * FROM cartes');
$donnees = $reponse->fetch();
$reponse->fetch()
将从响应中获取第一行。 因此,在while循环中执行$reponse->fetch()
时,它将从第二行开始。 所以你需要删除$donnees = $reponse->fetch();
在while循环之外。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.