Как правильно использовать цикл while в PDO fetchAll
пожалуйста, будьте спокойны, я только начал изучать 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?
[править]
обновленный код
i будет объявлять мой цикл 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'];
}
Ответы
Ответ 1
С fetchAll()
вам вообще не нужно использовать while
. Поскольку эта функция возвращает массив, вместо этого вы должны использовать 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'];
}