Метод PDOStatement::fetch() Что конкретно возвращает?
Primary tabs
Подробное описание метода fetch можно найти здесь.
PDOStatement::fetch — Извлечение следующей строки из результирующего набора.
Не очень понятно, почему в данном примере не выводится вторая строка массива. В зависимости от аргумента, указанного первым в ['...'] fetch возвращает либо user_id, либо name. Если указывать оба, то второй по счёту игнорируется, не выпадая в ошибку.
try {
$query = "select*
from users
where name = :name";
$user = $pdo->prepare($query);
$user->execute(['name' => 'Кирилл']);
echo $user->fetch()['user_id'], " - ", $user->fetch()['name'];
} catch (Exception $ex) {
echo "Ошибка-исключение: ", $ex->getMessage();
}Проблема решается, если обходить fetch циклом while:
while ($us = $user->fetch()) {
echo $us['user_id'], " - ", $us['name'];
}или вообще, в случае, если требуется вернуть всю строку таблицы, использовать метод fetchALL:
print_r ($user->fetchALL());
- Log in to post comments
- 8134 reads
vedro-compota
Thu, 05/18/2017 - 14:42
Permalink
В зависимости от аргумента,
-- а это какая именно строка кода подразумевается?
_____________
матфак вгу и остальная классика =)
melisa
Thu, 05/18/2017 - 14:43
Permalink
#7
#7
vedro-compota
Thu, 05/18/2017 - 14:49
Permalink
это не аргумент + что происходит (теоретически)
-- в данном случае это извлечение очередной строки ответа на SQL запрос (которую php представляет в виде массива) +
сразу же обращение к его ключу (а никак не аргумент функции fetch ).
По идее происходит следующее:
_____________
матфак вгу и остальная классика =)