Problème variable PHP mal interprétée par sql

Résolu/Fermé
the Red - 17 avril 2008 à 17:02
 the Red - 18 avril 2008 à 11:05
Bonjour,

J'ai un problème avec mes variables PHP.
J'effectue l'opération suivante sur un objet de type Domaine

$all = Domaine::findBySite($site);

La requête findBySite est la suivante :

public function findBySite($id){
$db = Connexion::getConnexion();
$query = "Select * from domaine where `id_site` = `$id`;";
$res = mysql_query($query);
$all = null;
if(!$res){
echo "erreur : ".mysql_errno()." : ".mysql_error();
}else{
$d = new domaine();
$d->setattr('id_bureau',$row[0]);
$d->setattr('id_site',$row[1]);
$d->setattr('id_service',$row[2]);
$all[] = $d;
}
return $all;
}

J'ai tout le temps droit à l'erreur "erreur : 1054 : Unknown column '1' in 'where clause'". Logiquement ça veut dire qu'il prend mon $id comme un nom de colonne et non une valeur. J'ai pourtant bien des int en clé primaires partout, et id_site en est une. J'avais déjà eu ce problème avec un varchar, mais là je ne vois vraiment pas, c'est juste un INT !!
A voir également:

3 réponses

doctormad Messages postés 430 Date d'inscription mercredi 28 novembre 2007 Statut Membre Dernière intervention 2 avril 2015 99
17 avril 2008 à 18:05
Salut,

As tu fais les tests usuels ? Je ne crois pas ;)

echo $query; et tu l'execute directement dans phpmyadmin et tu verras ton erreur.

Pour les nombres entiers pas besoin de mettre entre quotes idem pour les noms de champs.
0
Salut !

justement, les tests usuels, j'en ai fait et refait !

le test de $query me marque exactement ce que je veux, la requête dans phpmyadmin me donne le bon résultat ...

J'ai testé avec toutes les sortes de quotes possibles ... C'est bizarre, il va falloir que je regarde si je retourne les bons résultats dons mes différentes fonctions, mais sinon je vois vraiment pas d'où ça vient :(
0
Bon, comme on dit souvent, l'erreur est humaine ...

J'avais tout simplement oublié de mettre un while ( ...) pour récupérer toutes les valeurs, donc pas étonnant qu'il était pas d'accord avec ce que je retournais :S
Ca, c'est fait, reste plus qu'à attendre la prochaine erreur bidon !
0