Problème de connexion a la base de donnée

mouad -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour, je travail avec php et j'ai un problème de récupération des données de ma base de donnée.
voila mon code:

<?php

$ser='YKDS061208';

$bdd = new PDO('mysql:host=localhost;dbname=maibase;charset=utf8', 'root', '');

$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$query='SELECT CustomerName FROM maibasee WHERE SerialNumber='.$ser ;
$reponse = $bdd->query($query);

while ($donnees = $reponse->fetch())

{ $customername=$donnees['CustomerName'];
echo $customername."<br>";

}
?>

et puis voila l'erreur

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column

2 réponses

  1. Pitet Messages postés 2845 Statut Membre 530
     
    Salut,

    Ta requête sql n'est pas correcte, il faut entourer les valeurs avec des quotes.
    Puisque tu utilises PDO, tu peux utiliser la méthode quote() qui permet en plus d'éviter les injections sql :
    $query='SELECT CustomerName FROM maibasee WHERE SerialNumber=' . $bdd->quote($ser);
    


    https://www.php.net/manual/fr/pdo.quote.php

    Bonne journée,
    0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour,

    Vu que tu travailles avec PDO .. le mieux (pour éviter les injections sql) serait d'utiliser les requêtes préparées

    $query="SELECT CustomerName 
                  FROM maibasee 
                  WHERE SerialNumber= :ser";
    
    $datas = array(":ser"=>$ser);
    try{
      $prepare = $bdd->prepare($query);
      $reponse =  $prepare->execute($datas); 
    }catch(Exception $e){
      echo "Erreur  ! " .$e->getMessage();
    }
    
    


    Au passage ... prend l'habitude de placer le code de connexion à ta BDD dans un fichier à part que tu n'auras qu'à inclure dans les pages où tu en as besoin ....
     try{
       $bdd = new PDO("mysql:host=localhost;dbname=maibase;charset=UTF8", 'root', '');
       $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //pour activer l'affichage des erreurs pdo
    } catch(PDOException $e){ 
         // si souci lors de la connexion à la BDD
         echo 'ERROR: ' . $e->getMessage();
    }
    


    et donc, au début de ton code, tu n'auras qu'à mettre:
     // connexion à la BDD
    require_once "cnxBdd.php";
    
    

    0