Метод 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
- 6430 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 ).
По идее происходит следующее:
_____________
матфак вгу и остальная классика =)