Problème array empty

Résolu
blackbutterfly Messages postés 95 Date d'inscription   Statut Membre Dernière intervention   -  
blackbutterfly Messages postés 95 Date d'inscription   Statut Membre Dernière intervention   -
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

ReDLoG
 
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   Statut Membre Dernière intervention   1
 
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
ReDLoG
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   1
 
Problème résolue : echo ($List_Presta['1']['1']);
0
vordano Messages postés 1685 Date d'inscription   Statut Membre Dernière intervention   316
 
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   Statut Membre Dernière intervention   1
 
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