2017-03-10 39 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的想法是错误的 –