【发布时间】:2014-01-15 05:32:41
【问题描述】:
我是 PHP 新手。
我正在尝试以表格的形式显示员工的详细信息。
但是while($row = $result->fetchObject()) 部分没有执行,因为$result->fetchObject() 返回错误。和$rows = $result->fetchAll(); 有关系吗?
这是代码sn-p。
$sql = "SELECT id, name, designation FROM employees";
if ($result = $pdo->query($sql)) {
$rows = $result->fetchAll();
$num_rows = count($rows);
if ($num_rows > 0) {
echo "<table>\n";
echo " <tr class=\"heading\">\n";
echo " <td>ID</td>\n";
echo " <td>Name</td>\n";
echo " <td>Designation</td>\n";
echo " </tr>\n";
while($row = $result->fetchObject()) {
echo " <tr>\n";
echo " <td>" . $row->id . "</td>\n";
echo " <td>" . $row->name . "</td>\n";
echo " <td>" . $row->designation . "</td>\n";
echo " </tr>\n";
}
echo "</table>";
} else {
echo "No employees in database.";
}
else {
echo "ERROR: Could not execute $sql. " . print_r
($pdo->errorInfo());
}
【问题讨论】:
-
当您致电
fetchAll()时,您已经获取了所有内容!所以,fetchObject()没有什么可取的了。只需遍历$rows。 -
... 如
foreach ($rows as $row)中的while()循环。如果您没有设置默认值:$rows = $result->fetchAll(PDO::FETCH_OBJ),您可能还需要在调用fetchALL()时设置提取类型。那么你就不需要改变循环体内的任何东西了。 -
@MichaelBerkowski 您应该将其发布为答案。
-
感谢两位。它有帮助!