php-pdo循环通过行跳过第一行


php pdo loop through row skips 1st row

我正在循环数据库中的行,除了一件事之外,它还能工作。它跳过第一个id。它从第二张唱片开始。知道怎么解决这个问题吗?这是我的代码:

<?php
$query = $PDO->prepare('SELECT * FROM pokes');
$query->execute();
$row = $query->fetch(PDO::FETCH_ASSOC)
?>
<?php
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
$id = $row['id'];
$n = $row['name'];
$cp = $row['cp'];
echo $id . ' ' . $n . ' ' . $cp . '<br>';
}
?>
<?php
 // your first error is here. You are fetching the first row
 $row = $query->fetch(PDO::FETCH_ASSOC)
 // And here you start from the second, since you already did ones above
 while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
  //...rest of oyur code
 }
?>

你有两种方法来完成你的任务

  <?php
  // Just add the PDO::FETCH_ASSOC constant while you are looping
  while($row = $query->fetch(PDO::FETCH_ASSOC)){
   //...Code here
  }
  // another way is adding the constant before using it 
  $query->setFetchMode(PDO::FETCH_ASSOC);
  while($row = $query->fetch()){
   //...Code here
  }
  ?>

删除

$query->execute(); 之后的$row = $query->fetch(PDO::FETCH_ASSOC)

只需保留while($row = $query->fetch(PDO::FETCH_ASSOC))语句。

您的代码应该是这样的:

<?php
$query = $PDO->prepare('SELECT * FROM pokes');
$query->execute();
?>
<?php
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
$id = $row['id'];
$n = $row['name'];
$cp = $row['cp'];
echo $id . ' ' . $n . ' ' . $cp . '<br>';
}
?>

不要为一个查询提取两次。

<?php
$query = $PDO->prepare('SELECT * FROM pokes');
$query->execute();
foreach ($query as $row) {
$id = $row['id']; $n = $row['name']; $cp = $row['cp'];
echo $id . ' ' . $n . ' ' . $cp . '<br>';
}
?>