PHP PDO Fetch не работает?

Я могу успешно выбрать объект, но я не могу получить все строки из базы данных, используя следующий код, может ли кто-нибудь увидеть какие-либо очевидные ошибки?

$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 } 

с еще меньшими издержками памяти, чем любой другой метод. На самом деле, без лишних затрат памяти.