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

Signaler
-
Messages postés
29898
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 octobre 2020
-
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

Messages postés
29885
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
27 octobre 2020
6 875
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
Messages postés
29898
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 octobre 2020
2 894
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
http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs