Я не могу найти проблему здесь:
При наборе текста на моем терминале:
SELECT album_id FROM users_albums WHERE user_id=1;
У меня это на терминале:
3
4
(2 линга)
Это мой результат.
Но когда я хочу получить тот же результат с помощью PHP, сделайте следующее:
$albumsID = $this->_db->query("SELECT album_id FROM users_albums WHERE user_id=1");
$donnes = $albumsID->fetch(PDO::FETCH_ASSOC);
var_dump($donnes);
Результатом var_dump на php-странице является:
array(1) { ["album_id"]=> int(3) }
Поэтому у меня есть только первый album_id (3), но не второй (4).
Что мне не хватает?
Вы выбираете только 1 строку, используя fetch()
. Если вы хотите получить все строки, вы можете использовать:
$donnes = $albumsID->fetchAll(PDO::FETCH_ASSOC);
Имея это:
$donnes = $albumsID->fetch(PDO::FETCH_ASSOC);
Это возвращает только одну строку. Вам действительно нужно его закодировать:
while($donnes = $albumsID->fetch(PDO::FETCH_ASSOC)) {
$id = $donnes['album_id'];
echo $id;
}
Кроме того, ->fetchAll()
также выполнит ту же задачу:
foreach($albumsID->fetchAll(PDO::FETCH_ASSOC) as $donnes) {
$id = $donnes['album_id'];
echo $id;
}
fetchAll()
, посколькуfetch()
возвращает только первый результат.