2012-11-13 85 views
1

这里是我使用从表中提取数据的代码:的mysqli忽略了第一行的表

require_once 'connect.php'; 
      $sql = "SELECT * FROM `db-news`"; 
       $result = $mysqli->query($sql) or die($mysqli->error.__LINE__); 
        $row = mysqli_fetch_assoc($result); 
        while ($row = $result->fetch_assoc()) { 
        printf ($row['pagename'].' - To edit this page <a href="editnews.php?id='.$row['id'].'">click here</a><br>'); 
      } 

总是第一行被忽略。我没有打电话给mysqli_fetch_assoc两次,就像SO上的其他例子一样。我试过在while循环中将echo更改为printf,并且仍然在数据库中忽略第一行。

的DB设置,如:

CREATE TABLE IF NOT EXISTS `db-news` (
    `id` int(6) NOT NULL AUTO_INCREMENT, 
    `pagename` TEXT(300) NOT NULL, 
`pageurl` TEXT(300) NOT NULL, 
`pagetitle` TEXT(300) NOT NULL, 
`pagekeywords` TEXT(300) NOT NULL, 
`pagecontent` TEXT(300) NOT NULL, 
`extrafield1` TEXT(300) NOT NULL, 
`extrafield2` TEXT(300) NOT NULL, 
`extrafield3` TEXT(300) NOT NULL, 
`extrafield4` TEXT(300) NOT NULL, 
    PRIMARY KEY (`id`) 
) 

我在茫然,我应该尝试下呢?

+1

删除此行'$ row = mysqli_fetch_assoc($ result);' – Esailija

回答

7
mysqli not ignoring it but actually you are fetching first row before while loop 

// $row = mysqli_fetch_assoc($result); //remove this line 
while ($row = $result->fetch_assoc()) { 
    .... 
} 
+0

啊!这是凌晨...我的大脑还没有加速!谢谢你的解决方案! – williamsongibson

1

的问题是以下摘录的第一行:

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

的mysqli_fetch_assoc已经得到的第一行(并因此在while循环你已经1个步骤进一步)。 您应该将该行而不是$ reslut-> fetch_assoc部分放入while语句或将其删除。这应该可以解决问题。