Я хочу использовать подготовленный оператор, который отлично работает, если это всего одна строка, но когда я хочу построить таблицу, он показывает только первую строку. Я где-то упускаю что-то простое, но я пробовал все, что только что сломалось.
<?php
$dbh = dbh_get();
$sql = 'SELECT * FROM products
WHERE prod_id >6
ORDER BY prod_id';
$stmt = $dbh->prepare($sql);
$stmt->execute();
$r = $stmt->fetch();
print '
<tr>
<td>' . $r['login_id'] . '</td>
<td>' . $r['outlet_code'] . '</td>
<td>' . $r['user_name'] . '</td>
<td>' . $r['user_role'] . '</td>
<td>' . $r['last_login'] . '</td>
<td>' . $r['user_id'] . '</td>
</tr>' . "\n";
dbh_free($dbh);
?>
Не уверен, что проблема в php или sql






Вам нужно зациклить результаты $stmt->fetch(), так как он будет возвращать одну строку за вызов:
while ($r = $stmt->fetch()) {
print '
<tr>
<td>' . $r['login_id'] . '</td>
<td>' . $r['outlet_code'] . '</td>
<td>' . $r['user_name'] . '</td>
<td>' . $r['user_role'] . '</td>
<td>' . $r['last_login'] . '</td>
<td>' . $r['user_id'] . '</td>
</tr>' . "\n";
}
Рад, что смог помочь.