Próbuję pobrać wszystkie rekordy z mojej tabeli na mojej stronie, mam następujące
$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];
}
Tylko, że nie zwracam wszystkich rekordów, tylko moje pierwsze, Czy ktoś może zobaczyć, co robię źle?
2 odpowiedzi
Cóż, dzwonisz do $sth->fetch
tylko raz. Musisz zapętlić wyniki.
while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
echo $row['First_Name'] . ' ' . $row['Surname'] . "\n";
}
Nie wywołuj również indeksów ciągów tablic bez nawiasów klamrowych. W ten sposób PHP sprawdza, czy klucz jest STAŁY, a następnie rzutuje go na łańcuch. To po prostu zła praktyka i może prowadzić do nieoczekiwanych zachowań.
Jeśli zwróci to tylko jeden wiersz, prawdopodobnie masz tylko jeden wiersz w bazie danych (lub zestawie wyników). Pokaż nam więcej kodu!
Musisz użyć pętli:
while ($result = $sth->fetch(PDO::FETCH_ASSOC)) {
echo $result[First_Name];
echo ' ' . $result[Surname];
}
Możesz też użyć metody fetchAll:
foreach ($sth->fetchAll(PDO::FETCH_ASSOC) as $result) {
echo $result[First_Name];
echo ' ' . $result[Surname];
}
I uwaga: Jeśli First_Name
i Surname
nie są stałymi, jako nazwy klucza należy użyć ciągu.
$result['First_Name']
i $result['Surname']
Podobne pytania
Powiązane pytania
Nowe pytania
php
PHP to szeroko stosowany, wysokopoziomowy, dynamiczny, zorientowany obiektowo i interpretowany język skryptowy przeznaczony głównie do tworzenia stron WWW po stronie serwera. Używane w przypadku pytań dotyczących języka PHP.