Problème array empty

Résolu/Fermé
blackbutterfly Messages postés 95 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 29 mai 2012 - 17 avril 2012 à 13:32
blackbutterfly Messages postés 95 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 29 mai 2012 - 18 avril 2012 à 15:34
Bonjour,

Ce message est la suite de celui-ci : https://forums.commentcamarche.net/forum/affich-24962781-fonction-fetch-error
Comme le problème n'est plus celui du fetch(), je pense qu'il était plus judicieux d'ouvrir un autre topic. ( Si cela est contraire au règlement, je supprimerais celui-ci ).
Ma question est celle-ci ( une question à "cela fait 4h que je planche dessus"... )
Voici la fonction que j'utilise :
public function Get_MP_info(){
define ('USER', 'root@localhost');
define ('Paswd', '');
$pdo = new PDO('mysql:host=localhost;dbname=test', USER, Paswd);
$sql = "SELECT ID_PRESTA, CODE, LIBELLE, PVHT, TVA, PVTTC FROM PRESTATION";
$stmt = $pdo->prepare($sql);
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($rs);
print_r($rs);
$stmt->closeCursor();
return $rs;
}
or le print_r renvoi juste "array()" et le var_dump renvoi "array empty"
J'ai oublié une étape ou un : ? Quelque chose m'échappe ...
Je vous remercie à l'avance de l'aide et l'intérêt que vous portez à mon problème.
Cordialement


A voir également:

3 réponses

Juste te faire une proposition d'utiliser la gestion des erreurs PDO afin de tenter de voir pourquoi l'array est vide. Je te laisse consulter la doc officielle PHP concernant ce chapitre pour mieux l'appréhender...
http://php.net/manual/fr/pdo.error-handling.php
0
blackbutterfly Messages postés 95 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 29 mai 2012 1
17 avril 2012 à 14:02
Voici la modification pour augmenter le niveau de debug :

public function Get_MP_info ()
{
define ('USER', 'root@localhost');
define ('Paswd', '');
try {
$pdo_opt[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$pdo = new PDO('mysql:host=localhost;dbname=test', USER, Paswd, $pdo_opt);

$sql = "SELECT ID_PRESTA, CODE, LIBELLE, PVHT, TVA, PVTTC FROM PRESTATION";

$stmt = $pdo->prepare($sql);
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($rs);
print_r($rs);
$stmt->closeCursor();
return $rs;
}
catch (PDOException $err) {
$msg='DB -> '.$err->getMessage();
echo $msg;
}
}

Je n'ai aucun nouveau résultat d'affiché. -_- hormis mes :
array
empty

Array ( )
( ! ) Notice: Undefined index: CODE
( ! ) Fatal error: Cannot use object of type MProduit as array in
Qui me troll depuis maintenant 4h ... Je suis a bout
0
Notice: Undefined index: CODE 

ne signifirait-il pas que la colonne CODE (enfin sous cette syntaxe) n'existe pas dans la table PRESTATION ?
0
blackbutterfly Messages postés 95 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 29 mai 2012 1
17 avril 2012 à 14:33
Si pourtant la requête que je lance sur la console mysql me renvoie bien tous les résultats
0
blackbutterfly Messages postés 95 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 29 mai 2012 1
17 avril 2012 à 14:55
J'ai modifié ma fonction comme cela:

public function Get_MP_info ()
{
try {
// On se connecte à MySQL
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);
$reponse = $bdd->query('SELECT ID_PRESTA, CODE, LIBELLE, PVHT, TVA, PVTTC FROM PRESTATION');
$donnees = $reponse->fetchAll();
//print_r($donnees);
$reponse->closeCursor(); // Termine le traitement de la requête
return ($donnees);

}
catch(Exception $e)
{
// En cas d'erreur précédemment, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}
}
et quand je fais :
$List_Presta = $produit->Get_MP_info();
print_r($List_Presta);
voici ce qui s'affiche :
Array ( [0] => Array ( [ID_PRESTA] => 1 [0] => 1 [CODE] => 01A [1] => 01A ..........
Pourtant, il continu à me sortir les erreurs suivantes :
( ! ) Notice: Undefined index: CODE pour la ligne : $nb = sizeof($List_Presta['CODE']);
( ! ) Notice: Undefined index: ID_PRESTA pour la ligne : echo ($List_Presta['ID_PRESTA']);

Si quelqu'un pense avoir la solution ...
0
blackbutterfly Messages postés 95 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 29 mai 2012 1
17 avril 2012 à 15:10
Problème résolue : echo ($List_Presta['1']['1']);
0
vordano Messages postés 1685 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
17 avril 2012 à 16:02
une question: est ce que l'utilisation de
$stmt->execute();
sur ton premier bout de code aurais pus régler le problème ?
0
blackbutterfly Messages postés 95 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 29 mai 2012 1
18 avril 2012 à 15:34
Je pense. Le problème est qu'il n'effectuait pas la requête ( j'en suis persuadé ) donc je pense que oui mais, je ne sais pas.
0