пожалуйста, будьте легко на меня, я только начал изучать PDO и все еще нахожу свой способ преобразования моего mysqli в PDO.
поэтому у меня есть функция для получения содержимого из моей базы данных
function getContent() { $db = PDOconn(); $query = "SELECT * FROM posts ORDER BY id DESC LIMIT 0,3"; $sql = $db->prepare($sql); $row = $sql->fetchAll(PDO::FETCH_ASSOC); return $row; }
обычно, когда я возвращаю $row
в mysqli, я бы определил fetch_assoc()
в моем цикле while.
while ($row = $result->fetch_assoc()) { $id = $row['id']; $content = $row['content']; }
Теперь, поскольку (PDO::FETCH_ASSOC)
уже объявлен в моей функции.
как правильно создать цикл while для печати значений в PDO?
[edit] обновленный код
Я буду объявлять мой цикл while вне функции. поэтому мне нужно что-то вернуть из моей функции, но я не знаю, что это такое.
function getContent() { $db = PDOconn(); $query = "SELECT * FROM posts ORDER BY id DESC LIMIT 0,3"; $sql = $db->prepare($query); $row = $sql->execute(); return $row; }
это мой цикл while вне функции.
$sql = getContent(); while ($row = $sql->fetchAll(PDO::FETCH_ASSOC)) { $id = $row['id']; $content = $row['content']; }
С fetchAll()
вам вообще не нужно использовать . Поскольку эта функция возвращает массив , вместо этого вы должны использовать foreach()
:
function getContent() { $db = PDOconn(); $query = "SELECT * FROM posts ORDER BY id DESC LIMIT 0,3"; $sql = $db->prepare($query); $sql->execute(); return $sql->fetchAll(); } $data = getContent(); foreach($data as $row) { $id = $row['id']; $content = $row['content']; }