PHP MySql PDO requête tout simple qui ne marche pas!
Résolujh_kd Messages postés 41 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
En complément du problème récemment posé (résolu, merci) j'ai un souci similaire:
<code php>
$requete = $connexion->prepare("SELECT Rk_Table FROM taxabase1");
$requete->execute();
$result = $requete->fetchColumn();
echo '<p>Rank number : <b>!!' . $result[0] . '!!!</b></p>';
</code>
le résultat me donne 4 toujours quel que soit le lien sur lequel j'ai cliqué avant (il faudrait un nombre différent selon le clic, selon le nombre en rapport dans la colonne Rk_Table)
alors qu'ensuite dans la même boucle j'ai une autre requête qui marche (en rapport avec mon clic) et les 2 requêtes se suivent!
<code php>
$requete->bindParam(':id', $_GET["Rk_Hist"], PDO::PARAM_INT);
$requete->execute();
$result = $requete->fetchAll();
echo '<p>Reversed name (cf. legends and abbreviations in <a href="aa-header-frametaxon.php">MODEL</a>): <b>!!' . $result[0]["Reversed_name"] . '!!!</b></p>';
</code>
etc.
J'ai essayé (comme pour la 2ème requête) avec
<code php>
$requete = $connexion->prepare("SELECT Rk_Table FROM taxabase1");
$requete->execute();
$result = $requete->fetchAll();
echo '<p>Rank number : <b>!!' . $result[0] . '!!!</b></p>';
</code>
mais alors j'ai une erreur:
Notice: Array to string conversion in D:\wamp64\xxx.php on line 131 qui est:
<code php>
echo '<p>Rank number : <b>!!' . $result[0] . '!!!</b></p>';
</code>
j'ai bien regardé la doc php mais je ne trouve pas... une soluce?
Merci
A+, cordialement,
JH
Windows / Opera 95.0.0.0
- PHP MySql PDO requête tout simple qui ne marche pas!
- Iphone 14 simple - Guide
- Simple pdf - Télécharger - PDF
- Easy php - Télécharger - Divers Web & Internet
- Simple ocr - Télécharger - Bureautique
- Simple file locker - Télécharger - Sécurité
5 réponses
Bonjour,
Déjà, pour poster du code sur le forum, il ne faut plus utiliser les balises de code <code php> ... </code> .. mais l'icone prévue à cet effet lors de la rédaction de ton message
Ensuite :
Avant de dire que le souci vient de PDO ... as tu testé ta requête DIRECTEMENT dans ta BDD ( via phpmyadmin par exemple ) ? Le résultat obtenu est-il conforme à tes attentes ?? (je ne suis pas sûr !!! )
Je pense que tu as légèrement oublié de :
Soit mettre un WHERE à ta requête
Soit .. de boucler sur le résultat de celle-ci ..
Et au passage, pour ce qui concerne les erreurs PDO .. (et éviter d'en avoir... ) je t'invite à appliquer le contenu de ce lien : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Bonjour Jordane,
Désolé pour la non-actualisation de votre système de code... je suis âgé et je pose des questions très rarement sur le forum.
Il y a mis-compréhension, sauf erreur.
C'est un problème php comme indiqué dans l'erreur ligne 131.
J'ai bien testé sur wampserver. Je ne crois pas qu'il y ait un souci de requête.
Quand j'utilise fetchcolumn, comme vous l'aviez suggéré sur un message précédent et différent j'ai un résultat constant '4'
Avec fetchall, j'ai une erreur alors que la requête qui suit avec fetchall fonctionne bien (depuis toujours).
Merci
Cdlt, JH
Tu retournes le premier résultat de ta requête.
Il n'y a pas de raison que ça te retourne une valeur différente d'une fois sur l'autre....
C'est bien pour ça que je t'ai indiqué que tu avais certainement oublié un where...
Fais-nous une capture du résultat dans PHP myamine et indique nous dans cette image quelle valeur tu souhaites récupérer
Bonjour Jordane,
Dans phpmyadmin, je fais la requête:
SELECT Rk_Table FROM taxabase1
Cà marche.
Ci-dessous la jpg capture d'écran.
Est-ce que cela t'aide?
Dans localhost j'obtiens toujours '4', par exemple si je clique sur le lien correspondant à la ligne 44 le premier nombre sur le tableau en jpg le résultat me retourne encore '4', et pareil si je clique sur le lien correspondant à la ligne 800 le deuxième dans le même tableau (et bien sûr comme c'est des lignes différentes, je dois avoir des nombres tous différents).
J'espère que j'ai bien répondu à ta demande!
Cdlt, JH
Tu vois bien que ta requête retourne TOUT le contenu de ta table ... et pas UNE ligne dépendant de son ID ...
Comme je te le dit .. il manque, à minima, une clause WHERE dans ta requête ...
Maintenant, pourquoi le "4"
Donc, actuellement, ta requête retourne TOUTES les lignes de ta table.
Ton code PHP, utilisant le FETCHCOLUMN , tu récupères TOUTES les valeurs retournées par ta requête sous forme d'array.
Idem avec le FETCHALL ...
Suffit de faire un var_dump de ta variable $result pour voir ce qu'elle contient :
$requete = $connexion->prepare("SELECT Rk_Table FROM taxabase1"); $requete->execute(); $result = $requete->fetchColumn(); var_dump($result );
Maintenant, corrigeons ton code pour ne récupérer qu'une seule ligne dans ta requête en fonction du lien cliqué :
//On récupère PROPREMENT les variables AVANT de les utiliser : $id = !empty($_GET["Rk_Hist"]) ? $_GET["Rk_Hist"] : null; $sql = "SELECT Rk_Table FROM taxabase1 WHERE id =:id "; try{ $requete = $connexion->prepare($sql); $requete->bindParam(':id', $id, PDO::PARAM_INT); $requete->execute(); $result = $requete->fetchColumn(); var_dump($result ); echo '<p>Rank number : <b>!!' . $result . '!!!</b></p>'; }catch(Exception $e){ echo "Erreur SQL : " . $e->getMessage(); }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question