Я могу успешно выбрать объект, но я не могу получить все строки из базы данных, используя следующий код, может ли кто-нибудь увидеть какие-либо очевидные ошибки?
$sql2 = "SELECT ID, Latitude, Longitude, Name FROM Countries"; $stmt2 = $pdo->prepare($sql2); $stmt2->execute(); while ($row = $stmt2->fetch(PDO::FETCH_ASSOC)) { echo $countryID = $row->ID; echo $countryName= $row->Name; echo $longitude2 = $row->Longitude; echo $latitude2 = $row->Latitude; }
Параметр PDO :: FETCH_ASSOC сообщает PDO возвращать результат как ассоциативный массив. Так вы можете получить массив не объект
while ($row = $stmt2->fetch(PDO::FETCH_ASSOC)) { echo $countryID = $row['ID']; echo $countryName= $row['Name']; //Rest of the code }
Вы должны понимать, что константы PDO::FETCH
являются целенаправленными. И если вы хотите использовать объектную нотацию, вам нужно указать PDO::FETCH_OBJ
вместо ...ASSOC
.
В любом случае PDO::FETCH_LAZY
должен быть наиболее предпочтительным способом, так как он позволит вам использовать ЛЮБЫЕ обозначения:
while ($row = $stmt2->fetch(PDO::FETCH_LAZY)) { echo $row->ID; // all echo $row['ID']; // three echo $row[0]; // works }
с еще меньшими издержками памяти, чем любой другой метод. На самом деле, без лишних затрат памяти.