Du machst eigentlich zu viel:
$query = $dbh->prepare("SELECT * FROM students");
$query->execute();
$result = $dbh->query($query);
Die problematische Zeile lautet:
$result = $dbh->query($query);
Überprüfen Sie dies mit http://php.net/pdo.query
, ist der Parameter ein String, eigentlich der SQL-String, den Sie oben bereits verwenden, nicht der Ergebniswert eines PDO::prepare()
anrufen.
Für Ihre einfache Abfrage können Sie einfach Folgendes tun:
$result = $dbh->query("SELECT * FROM students");
Oder wenn Sie sich vorbereiten möchten:
$query = $dbh->prepare("SELECT * FROM students");
$query->execute();
$result = $query;
Letzteres ist eine Art Boilerplate, wenn Sie Variablen in die Abfrage einfügen möchten, deshalb bereiten Sie es vor.
Das nächste Problem ist mit foreach
Zeile:
foreach($result as $row);
Durch das Semikolon ;
brechen Sie die Schleife sofort ab Am Ende. Entfernen Sie dieses Semikolon, sodass der folgende Codeblock in spitzen Klammern zum Hauptteil der foreach-Schleife wird.