Bonjour,
Ça fait longtemps que je n'ai pas touché à la programmation,
"PHP objet" et "PDO" c'est nouveau pour moi,
je suis en train d'apprendre avec des tutoriels.
J'ai compris que quand on créer une classe, il faut en créer une autre pour la gérer dans la base de données (par convention "maClassManager").
Je suis tombé sur un exemple qui me fait patauger sur la fonction fetchColumn
Je suis allé voir le manuel :
http://www.php.net/manual/fr/pdostat...etchcolumn.php
le manuel dit :
"retourne une colonne depuis la ligne suivante d'un jeu de résultats."
Je ne comprends pas ce que ça veut dire... Pas même avec les exemples...
Dans le tutoriel, on a les fichiers :
- "Personnage.class.php"
- "PersonnagesManager.class.php"
on cherche a savoir si un personnage est déjà dans la base de données
la fonction "existe" est écrite dans "PersonnagesManager.class.php" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public function existe($info) { if (is_int($info)) // On veut voir si tel personnage ayant pour id $info existe. { return (bool) $this->_db->query('SELECT COUNT(*) FROM personnages WHERE id = '.$info)->fetchColumn(); } // Sinon, c'est qu'on veut vérifier que le nom existe ou pas. $q = $this->_db->prepare('SELECT COUNT(*) FROM personnages WHERE nom = :nom'); $q->execute(array(':nom' => $info)); return (bool) $q->fetchColumn(); }
et on appel la fonction existe de cette manière :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 $db = new PDO('mysql:host=localhost;dbname=mini-test', 'root', ''); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); // On émet une alerte à chaque fois quune requête a échoué. $manager = new PersonnagesManager($db); if (isset($_POST['nom'])) { $perso = new Personnage(array('nom' => $_POST['nom'])); if ($manager->existe($perso->nom())) { $message = 'Le nom du personnage est déjà pris.'; unset($perso); } else { $manager->add($perso); } }
Alors dans ma tête c'est archi confus...
Je ne comprend pas ce que fait la fonction fetchColumn
j'en arrive à me dire :
"Quand je fais une requête avec un manager, il faut mettre fetchColumn à la fin, sinon on a une erreur de type PDO::STATEMENT"
J'imagine que je dis n'importe quoi... Est-ce que vous pouvez m'aider svp ?
Partager