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

mouad -  
jordane45 Messages postés 38486 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

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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