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

Fermé
mouad - 19 mai 2016 à 12:38
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 20 mai 2016 à 01:34
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
A voir également:

2 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
19 mai 2016 à 14:04
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 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
20 mai 2016 à 01:34
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