Результаты петли PDO PHP

Я пытаюсь извлечь все записи из своей таблицы на моем сайте, у меня есть следующее

$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']