Ответ 1
<?php
$sql = "SELECT `ingredient_name` FROM `ingredients`";
$ingredients = $pdo->query($sql)->fetchAll(PDO::FETCH_COLUMN);
Я новичок в PDO и заставляю их работать с MySQL. Кажется, я все хорошо себя чувствую, добавляя новые данные и восстанавливая одиночные результаты, но это я застрял.
У меня есть таблица, состоящая из ингредиентов, я пытаюсь сделать все ингредиенты в единый массив.
Я запускаю запрос непосредственно в SQL, и он показывает мне все результаты, но с PDO я не могу получить это с помощью только fetch
. Когда я использую подход fetchAll
, как показано ниже, он дает мне все результаты, но в многомерном массиве, а не только в массиве.
Есть ли отдельный метод fetch
или мне нужно создать цикл, который добавляет результаты в $a[]
?
$ingredient_q = "SELECT
`ingredient_name`
FROM
`ingredients`
";
$ingredient_stmt = $pdo->query($ingredient_q);
$ingredient_stmt ->setFetchMode(PDO::FETCH_ASSOC);
$a = $ingredient_stmt->fetchAll();
Вещи, которые я пробовал:
$a = $ingredient_stmt->fetchAll(); // Returns a multidimensional array (not what I want)
$a = $ingredient_stmt->fetch(); // Returns one single result (the first entry)
$a[] = $ingredient_stmt->fetch(); // Returns one single result but in a multidimensional array.
Любая помощь будет принята с благодарностью.
<?php
$sql = "SELECT `ingredient_name` FROM `ingredients`";
$ingredients = $pdo->query($sql)->fetchAll(PDO::FETCH_COLUMN);
вам нужно foreach
или while
через ваши извлеченные строки:
foreach ($ingredient_stmt->fetchAll() as $row) {
var_dump($row);
}
while ($row = $ingredient_stmt->fetch()) {
var_dump($row);
}
оба являются эквивалентными, foreach
генерирует большую нагрузку на память при загрузке большего массива, тогда как while
получает по одной строке за раз
сообщите, как использовать fetch
и fetchAll
; первый для этого, перемещаясь по каждой строке по одному, последний нацелен на foreach, где массив должен быть заранее известен