Je doet eigenlijk te veel:
$query = $dbh->prepare("SELECT * FROM students");
$query->execute();
$result = $dbh->query($query);
De problematische regel is:
$result = $dbh->query($query);
Neem contact op met http://php.net/pdo.query
, de parameter is een string, eigenlijk de SQL-string die je hierboven al gebruikt, niet de resultaatwaarde van een PDO::prepare()
bellen.
Voor uw eenvoudige vraag kunt u gewoon doen:
$result = $dbh->query("SELECT * FROM students");
Of als je je wilt voorbereiden:
$query = $dbh->prepare("SELECT * FROM students");
$query->execute();
$result = $query;
Het laatste is wat standaard als je variabelen in de query wilt invoegen, daarom bereid je het voor.
Het volgende probleem is met de foreach
regel:
foreach($result as $row);
U beëindigt de lus onmiddellijk vanwege de puntkomma ;
aan het einde. Verwijder die puntkomma zodat het volgende codeblok tussen haakjes het hoofdgedeelte van de foreach-lus wordt.