Я пытаюсь извлечь все записи из своей таблицы на моем сайте, у меня есть следующее
$sth = $conn->prepare("SELECT * FROM directory WHERE user_active != ''"); $sth->execute(); /* Exercise PDOStatement::fetch styles */ $result = $sth->fetch(PDO::FETCH_ASSOC); foreach ($sth->fetchAll(PDO::FETCH_ASSOC) as $result) { echo $result[First_Name]; }
Только он не возвращает все записи, только мой первый. Может ли кто-нибудь увидеть, где я ошибаюсь?
Ну, вы вызываете $sth->fetch
один раз. Вам нужно перебрать результаты.
while ($row = $sth->fetch(PDO::FETCH_ASSOC)) { echo $row['First_Name'] . ' ' . $row['Surname'] . "\n"; }
Также не вызывать индексы строк массива без привязок. Таким образом, PHP проверяет, является ли ключ CONSTANT, затем переводит его в строку. Это просто плохая практика и может привести к неожиданному поведению.
Если это возвращает только одну строку, вы, вероятно, имеете только одну строку в базе данных (или набор результатов). Покажите нам больше кода!
Вам нужно использовать цикл:
while ($result = $sth->fetch(PDO::FETCH_ASSOC)) { echo $result[First_Name]; echo ' ' . $result[Surname]; }
Или вы можете использовать метод fetchAll :
foreach ($sth->fetchAll(PDO::FETCH_ASSOC) as $result) { echo $result[First_Name]; echo ' ' . $result[Surname]; }
И Примечание. Если First_Name
и Surname
не являются константами, вы должны использовать эту строку в качестве имени ключа.
$result['First_Name']
и $result['Surname']