Как правильно запустить цикл с PDO?

Без использования PDO все работает. С PDO чет не хочет, думаю ошибка мелкая, но не могу найти)

$post = $pdo->prepare('SELECT * FROM post ORDER BY id DESC LIMIT 2');
$post->execute();
$news = array();
while($base = $post->fetchAll(PDO::FETCH_BOTH)) {
        $news[] = $base;
}

<?php foreach ($news as $n): ?>
    <p><strong><?php echo $n['date'] ?></strong> <?php echo $n->h1 ?></p>
<?php endforeach ?>
  • Вопрос задан
  • 1563 просмотра
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Элементарно. fetchAll уже вернёт готовый массив.
$post = $pdo->prepare('SELECT * FROM post ORDER BY id DESC LIMIT 2');
$post->execute();
$news = $post->fetchAll(PDO::FETCH_BOTH);

<?php foreach ($news as $n): ?>
    <p><strong><?php echo $n['date'] ?></strong> <?php echo $n->h1 ?></p>
<?php endforeach ?>


Нафиг вам FETCH_BOTH, дублирование памяти и мешанина обращений к элементам оставлю на вашей совести.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
BuriK666
@BuriK666
Компьютерный псих
while ($n = $post->fetch()) {
...
}

Зачем Вы создаете массив, чтоб просто по нему пробежаться?
Ответ написан
@eskrano
<?php
/** Для подстановки своих лимитов т.е переменных надо по сути оффнуть эмуляцию **/
/* пример выкл эмуляции при подстановке своих лимитов
$db->setAttribute( PDO::ATTR_EMULATE_PREPARES, false );
Включить думаю поймешь
*/
$stmt = $db->prepare($sql);
$stmt->execute($placeholders);

$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($data as $dd)
{
print_r($dd);
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы