Всъщност правите твърде много:
$query = $dbh->prepare("SELECT * FROM students");
$query->execute();
$result = $dbh->query($query);
Проблемната линия е:
$result = $dbh->query($query);
Проверете с http://php.net/pdo.query
, параметърът е низ, всъщност SQL низът, който вече използвате по-горе, а не резултатната стойност на PDO::prepare()
обадете се.
За вашата проста заявка можете просто да направите:
$result = $dbh->query("SELECT * FROM students");
Или ако искате да приготвите:
$query = $dbh->prepare("SELECT * FROM students");
$query->execute();
$result = $query;
По-късното е някакъв шаблон, ако искате да вмъкнете променливи в заявката, затова я подготвяте.
Следващият проблем е с foreach
ред:
foreach($result as $row);
Прекратявате цикъла незабавно поради точката и запетаята ;
накрая. Премахнете тази точка и запетая, така че следният кодов блок с ъглови скоби да стане тялото на цикъла foreach.