Page 1 sur 1

PDO-Mysql avec place holders

Posté : 31 janv. 2013, 13:36
par Cypher_PHP
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

Re: PDO-Mysql avec place holders

Posté : 31 janv. 2013, 14:00
par Perine
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).

Re: PDO-Mysql avec place holders

Posté : 31 janv. 2013, 14:05
par Cypher_PHP

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(); } } ?>

Re: PDO-Mysql avec place holders

Posté : 31 janv. 2013, 15:33
par Cypher_PHP
j'ai trouvé
c'est ma faute
en fait, c'était un data vide

je mets en résolu