Я новичок в PHP. Я пытаюсь отобразить детали сотрудников в виде таблицы. Но while($row = $result->fetchObject())
часть не исполняется, так как $result->fetchObject()
возвращает false. Как это связано с $rows = $result->fetchAll();
? Вот фрагмент кода.PDO fetchObject() после fetchall(). return false
$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(). Вам также может потребоваться установить тип выборки при вызове 'fetchALL()', если вы не задали его по умолчанию: '$ rows = $ result-> fetchAll (PDO :: FETCH_OBJ)'. Тогда вам не нужно ничего менять в теле цикла. –
@MichaelBerkowski Вы должны опубликовать это как вопрос. – Barmar