[RESOLU] PDO-Mysql avec place holders

Eléphant du PHP | 258 Messages

31 janv. 2013, 13:36

Bonjour

Je suis en train de tester sur les différentes méthodes de PDO (requête préparée ou non, place holders, etc...)
Je vous rappelle que je ne suis pas calé sur PDO puisque je me lance maintenant dans cette aventure

merci beaucoup

Code : Tout sélectionner

<?php function select_prepare_languages__place_holders_id(){ global $db; $sql = "SELECT id, title FROM languages WHERE id = ? "; $stm = $db->prepare($sql); $stm->bindValue(1, 6, PDO::PARAM_INT); $stm->execute(); $result = array(); while( $rows = $stm->fetchAll() ){ $result[] = $rows; } return $result; } ?>
on affiche les résultats mais ils sont vides ou inexistants

Code : Tout sélectionner

<?php $rows = select_prepare_languages__place_holders_id(); foreach ($rows as $row) { echo $row->title."<br/>"; } ?>
quel est le problème?
merci beaucoup
Cordialement
---------------------------------------------------------
Cyphos utilise
- Firefox et Google Chrome dernière version
- Windows Seven ou Windows XP SP3,
- Wampserver

Eléphant du PHP | 120 Messages

31 janv. 2013, 14:00

fetchAll() retourne un tableau de tableaux.
Et ce tableau de tableaux, tu le mets dans un autre tableau.

Tu dois utiliser fetch() si tu veux garder la boucle ou retourner directement le résultat de fetchAll().

D'ailleurs pourquoi utilises-tu global ? C'est un très mauvais style. Envoie l'objet PDO à la fonction proprement (cf. Injection de dépendances).

Eléphant du PHP | 258 Messages

31 janv. 2013, 14:05

Code : Tout sélectionner

<?php define('DB_HOST', 'localhost'); define('DB_DATABASE', 'xxx'); define('DB_USERNAME', 'xxxx'); define('DB_PASSWORD', 'xxxx'); function ConnDB(){ global $db; try{ $db = new PDO('mysql:host='.DB_HOST.';dbname='.DB_DATABASE, DB_USERNAME, DB_PASSWORD,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING ); echo "Connexion réussie<br />"; }catch(Exception $e){ echo "Connexion pas réussie<br />"; echo "Erreur : ".$e->getMessage()."<br />"; echo "N° : ".$e->getCode(); } } ?>
Cordialement
---------------------------------------------------------
Cyphos utilise
- Firefox et Google Chrome dernière version
- Windows Seven ou Windows XP SP3,
- Wampserver

Eléphant du PHP | 258 Messages

31 janv. 2013, 15:33

j'ai trouvé
c'est ma faute
en fait, c'était un data vide

je mets en résolu
Cordialement
---------------------------------------------------------
Cyphos utilise
- Firefox et Google Chrome dernière version
- Windows Seven ou Windows XP SP3,
- Wampserver