2012-11-13 89 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語句或將其刪除。這應該可以解決問題。