2017-03-10 38 views
-1

嗨,夥計們我試圖從我的表中獲取pdo的數據,但最後插入的行從未出現在填充表中。當我添加另一行數據,然後再次獲取數據填充我然後看到以前沒有顯示的行中的數據,但最後插入的行不顯示。PHP:最後一個數據行不會顯示在pdo GET查詢

這裏是我的代碼:

<?php 
# This program will allow an admin to see email stats for a certain user 
$userid = 1; // admin 

$email_to = 2 // employee id 
$email_by = 2 // employee id 

$sql = "SELECT * FROM users WHERE userid = :user_id AND (person = :email_to OR person = :email_by) ORDER BY date DESC"; 

$stmt = $this->db->prepare($sql); 
$stmt->bindparam(":userid", $userid); 
$stmt->bindparam(":email_to", $email_to); 
$stmt->bindparam(":email_by", $email_by); 
$stmt->execute(); 

if ($stmt->fetch(PDO::FETCH_ASSOC)) { 

    echo $stmt->rowCount(); // gives me the expected number of rows 

    while ($data = $stmt->fetch(PDO::FETCH_ASSOC)) { 

    echo '<tr><td style="text-align:left;">' . $data['email_subject'] 
    . '</td><td>' . $data['email_date'] . '</td><td>' 
    . $data['email_time'] . '</td></tr>'; 
} 
} else { 
echo "Sorry, no record found."; 
} 

?> 

如上代碼註釋中,rowCount()確實給我行e.g. 10,的預期數量,但在人口表結果我只看到9 rows

在此先感謝你們。

+0

使用fetchAll()然後檢查返回的數組以查看是否返回任何數據 –

回答

0

這是因爲你無意中通過if語句跳過第一行:

if ($stmt->fetch(PDO::FETCH_ASSOC)) { ... 

,你把它分配給什麼。您可以使用

do {} while() 

代替。

+0

Works!非常感激。 – Ros

+0

@Ros使用do而不是while的想法是錯誤的 –