Mammouth du PHP |
1609 Messages
05 mars 2024, 14:56
Ca fonctionne car $statement a été défini lors du if précédent et que $statement->fetchAll() retourne un tableau de toutes les lignes du résultat.
Dans ton exemple la variable $tableau n'est pas définie comme le dit le message d'erreur "Undefined variable" (variable indéfinie) ! Tu ne peux pas utiliser une variable qui n'existe pas, comment veux-tu que le code interprète une variable qui n'existe pas ? y a pas de magie, il va pas deviner ce qu'elle serait sensée être. Ce n'est pas le nom de la variable qui définit sa valeur, c'est la valeur qu'on lui attribue lors de sa définition avec le signe = et peu importe son nom. Il faut donc forcément la définir au préalable en lui attribuant une valeur et si possible la bonne valeur en fonction de ce qu'on veut faire avec. Quand à son nom il est question de lisibilité. Des noms de variables bien choisis permettent dans l'idéale de comprendre ce que fait un code à sa simple lecture.
Le code de two3d n'était pas à copier sans réfléchir, il fallait le comprendre et définir $tableau en fonction de ce que tu souhaitais faire avec, en l’occurrence tester le nombre de lignes du résultat de la requête. Il fallait donc en faire un tableau avec toutes les lignes du résultat, ce qui peut s'obtenir avec la méthode fetchAll de la class PDOStatement, puisqu'ici tu utilises l'interface PDO.
Ton premier exemple fonctionnait car $resultat était au préalable défini avec $resultat = $sth->fetchAll(PDO::FETCH_NUM); et que la fonction empty retourne true quand on lui passe un tableau vide.
Développeur web depuis + de 20 ans