Erreur : [PDOException] SQLSTATE [42S22] : Colonne introuvable: 1054....

Fermé
Livier - 5 oct. 2020 à 14:49
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 6 oct. 2020 à 15:00
Bonjour, je souhaite poser un problème que je rencontre en ce moment.
Le problème se fait au niveau de la récupération de éléments de ma base de données. C’est simple quand il s’agit de récupérer des données numériques (Ex:55555) et de faire un (SELECT * FROM (nom de la table) WHERE (nom de la colonne=données récupérer) ça marche sans problème mais quand la donnée récupérer et alpha ou alphanumérique (Ex: ahdhd ou ag56gh) j’obtiens plutôt une erreur. J’essaye de comprendre mais ce que j’arrive a comprendre c’est que au lieu de vérifier si la donnée existe dans la colonne il recherche plutôt la donné comme une colonne et ne la trouve.
Merci de m’aider. Je suis plus où moins débutant....


Configuration: iPhone / Safari 14.0

2 réponses

jee pee Messages postés 39622 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024 9 231
5 oct. 2020 à 15:02
Bonjour,

Pour une donnée numérique on va avoir
SELECT * FROM table WHERE colonne=55555


Mais pour une donnée alphanumérique, il faut utiliser des guillemets, sinon la valeur est considérée comme un nom de colonne
SELECT * FROM table WHERE colonne="ag56gh"


Cela pour la syntaxe pure en sql, à toi de voir en php, que je ne pratique pas.

Cdlt
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
6 oct. 2020 à 15:00
Bonjour,

En PHP / PDO, je te conseille d'utiliser les requêtes préparées

$valeur = "ag56gh";

//préparation de la requête et des variables
 $sql = "SELECT * FROM tatable WHERE taColonne = :tavaleur";

 $datas = array(':tavaleur'=>$valeur);

//Execution de la requete
try{
  $requete = $bdd -> prepare($sql) ;
  $requete->execute($datas) ;
  $result = $requete->fetchAll(); //on stocke le résultat dans un arrau
}catch(Exception $e){
  // en cas d'erreur :
   echo " Erreur ! ".$e->getMessage();
   echo " Les datas : " ;
  print_r($datas);
}


if(!empty($result )){
  print_r($result ); // affichage du resultat...
}


Au passage, pense à activer la gestion des erreurs PDO et place CHAQUE requête dans des blocs TRY/CATCH
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

0