【问题标题】:Retrieve all row but the first record is missing检索所有行但缺少第一条记录
【发布时间】:2014-11-23 01:40:33
【问题描述】:
$query = "SELECT * FROM abc";

    if ($result = $db->query($query)) {

      $row = $result->fetch_assoc();


        while ($row = $result->fetch_assoc()) {

            $data[] = array("a"=>$row["a"], 
                            "b"=>$row["b"],
                            "c"=>$row["c"],
                            "d"=>$row["d"]
                            ); 


        }

        $result->close();
    }

$db->close();

        <?php foreach ($data as $row) { ?>

                <form action="">
                    <div class="col-lg-3">
                        <input type="text" value="<?php echo $row['a'] ?>"/>
                    </div>
                    <div class="col-lg-3">
                        <input type="text" value="<?php echo $row['b'] ?>"/>
                    </div>
                    <div class="col-lg-3">
                        <input type="text" value="<?php echo $row['c'] ?>"/>
                    </div>
                    <div class="col-lg-3">
                        <input type="text" value="<?php echo $row['d'] ?>"/>
                    </div>
                </form>

              <?php } ?>

上面是我用来检索表中所有行的确切代码。奇怪的是我有 5 行,它只显示 4。第一行丢失了。我想知道为什么。

【问题讨论】:

  • 您在 while 循环之前调用了 fetch_assoc()。那就是吃第一张唱片。这个问题经常出现。是否有一些编码模板有这个问题?
  • @GordonLinoff 编码模板?那么有什么解决办法呢?
  • 去掉while语句前的多余调用即可。

标签: php mysql sql mysqli


【解决方案1】:

在您的代码中,您在开始 while 循环之前调用了 $row = $result-&gt;fetch_assoc();。此行正在“消耗”您的第一个原始数据,当您进入循环时,您通过再次调用相同的方法将光标移动到第二行。

while 循环的条件在内容之前执行,在这里您可以找到有关PHP While loop 的更多信息

要修复您的代码,请删除第一行。

【讨论】:

  • 天哪,我是多么粗心,没有注意到!感谢您指出这一点!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-07
  • 2019-10-26
  • 1970-01-01
  • 2013-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多