Pdo

Fermé
jordxn - Modifié par jordxn le 9/02/2014 à 20:03
 Utilisateur anonyme - 10 févr. 2014 à 13:57
Bonjour,

J'ai trouver un script en ajax utilisant le language mysql et j'ai essayé de le mettre en PDO mais depuis il ne fonctionne plu... :

Version qui marche :



<?php 
$link = mysql_connect("**", "**", "*")
or die("Impossible de se connecter : " . mysql_error());
mysql_select_db("*");

// si une variable queryString a été posté
if(isset($_POST['queryString'])) {
$queryString=$_POST['queryString'];
// si la longueur du contenu de la variable est superieur à 0
if(strlen($queryString) >0) {
// requete sql à personnaliser pour correspondre à votre base de données
$result = mysql_query("SELECT nom FROM marque WHERE nom LIKE '$queryString%' LIMIT 10");
if($result) {
// on parcourt les resultats
while ($nom = mysql_fetch_object($result)) {
// on affiche les resultats dans un element de liste en ajoutant la fonction la fill sur l'evenenement onClick
echo '<li onClick="fill(\''.$nom->nom.'\');">'.$nom->nom.'</li>';
}
} else {
echo 'Il y a une probleme avec la requete sql.';
}
} else {

}
} else {
echo 'Il ne devrait pas avoir un accès direct à ce script !!!';
}
?>

Version qui bug :

<?php 
include('config.php');

// si une variable queryString a été posté
if(isset($_POST['queryString'])) {
$queryString=$_POST['queryString'];
// si la longueur du contenu de la variable est superieur à 0
if(strlen($queryString) >0) {
// requete sql à personnaliser pour correspondre à votre base de données
$query = $pdo->prepare("SELECT nom FROM marque WHERE nom LIKE '$queryString%' LIMIT 10");
$query->execute();
if( $query->rowCount() != 0){ //S'il existe des r??sultats.
while($Value=$query->fetch()) {
$nom=$Value['nom'];
// on affiche les resultats dans un element de liste en ajoutant la fonction la fill sur l'evenenement onClick
echo '<li onClick="fill(\''.$nom->nom.'\');">'.$nom->nom.'</li>';
}
} else {
echo 'Il y a une probleme avec la requete sql.';
}
} else {

}
} else {
echo 'Il ne devrait pas avoir un accès direct à ce script !!!';
}
?>



Merci

1 réponse

Bonjour

Dans ta version avec mysql_, tu faisais un mysql_fetch_object et tu récupérais donc un objet. Le champ récupéré était donc $nom->nom, que tu utilisais dans ton <li>
Maintenant, avec PDO, si tu n'as pas mis d'option particulière, avec $Value=$query->fetch(), tu récupères un tableau associatif et non plus un objet. Le champ qui t'intéresse est
$nom=$Value['nom']; comme tu l'as très bien écrit.
Donc dans ton <li>, il faut maintenant mettre simplement $nom et non pas $nom->nom.
0
Merci beaucoup,
0
Utilisateur anonyme
10 févr. 2014 à 13:57
De rien.
0