Vous en faites trop en fait :
$query = $dbh->prepare("SELECT * FROM students");
$query->execute();
$result = $dbh->query($query);
La ligne problématique est :
$result = $dbh->query($query);
Vérifiez avec http://php.net/pdo.query
, le paramètre est une chaîne, en fait la chaîne SQL que vous utilisez déjà ci-dessus, pas la valeur de résultat d'un PDO::prepare()
appeler.
Pour votre requête simple, vous pouvez simplement faire :
$result = $dbh->query("SELECT * FROM students");
Ou si vous aimez vous préparer :
$query = $dbh->prepare("SELECT * FROM students");
$query->execute();
$result = $query;
Ce dernier est un passe-partout si vous souhaitez insérer des variables dans la requête, c'est pourquoi vous le préparez.
Le problème suivant est avec le foreach
ligne :
foreach($result as $row);
Vous terminez la boucle immédiatement à cause du point-virgule ;
à la fin. Supprimez ce point-virgule pour que le bloc de code entre crochets suivant devienne le corps de la boucle foreach.