Je ne trouve pas l'erreur dans ma requête

Eléphant du PHP | 88 Messages

08 janv. 2008, 22:16

Bonjour

Lorsque que je lance cette requete :
$req_select_info_2_1 = mysql_query("SELECT numero_rue_1, rue_1, code_postal_1, ville_1,
 pays_1, batiment_1, etage_1, porte_1 FROM inscription WHERE numero_rue_1 = 
'$select_numero_rue_1' AND rue_1 = '$select_rue_1' AND code_postal_1 = '$select_code_postal_1'
 AND ville_1 = '$select_ville_1' AND pays_1 = '$select_pays_1' AND batiment_1 = 
'$select_batiment_1' AND etage_1 = '$select_etage_1' AND porte_1 = '$select_porte_1' AND 
identifiant != '$identifiant'") or die ('3 '.mysql_error());

Cette erreur apparait :
3 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' AND code_postal_1 = '$code_postal_1' AND ville_1 = '$villle_1' AND pays_
Et je n'arrive toujours pas à localiser l'erreur

Quelqu'un l'aurai t-il aperçue ? Merci.
Cordialement zaknaou

ViPHP
AB
ViPHP | 5818 Messages

08 janv. 2008, 22:59

Et si tu sortais les variables de ta requête ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

08 janv. 2008, 23:31

Il faut savoir que, dans ce genre de message d'erreur, ce qui est juste après le "near '" est l'endroit précis de la requête auquel MySQL à planté.

Dans ton cas, il s'agit d'un quote (') juste avant le "AND code_postal_1=..."
Pour débuguer ce genre d'erreur, il faut commencer par afficher la requête générée

Pour cela, il faut commencer par plusieurs règles de base :
1/ on place la requête dans une variable, pas directement dans mysql_query()
exemple
$query = "SELECT ...";
$result = mysql_query( $query );
alors que toi, tu utilises
$result = mysql_query( "SELECT ..." );
2/ on extrait les variables des chaines
exemple
$query = "SELECT id FROM table WHERE nom = '". $nom ."' AND prenom = '". $prenom ."'";
alors que toi, tu utilises
$query = "SELECT id FROM table WHERE nom = '$nom' AND prenom = '$prenom'";
3/ En cas d'erreur sur une requête, on affiche la requête générée
Exemple
$query = "SELECT ...";
echo $query;
(d'où l'importance de l'étape 1)

NOTE IMPORTANTE : tu n'es pas nouveau sur le forum. Tu sais donc qu'il faut toujours commencer par une recherche. Dans ce cas, tu aurais trouvé des tas de sujets.
De plus, je suis persuadé que ce que je viens de te dire, nous te l'avons déjà dit (je n'ai ni le temps, ni la patience de faire ces recherches pour toi, mais j'en suis persuadé).
Donc, je voudrais une bonne fois pour toute que tu te bouge et que tu essayes de comprendre ce qu'on te dit et que tu arrêtes de nous prendre pour des débugeurs.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

09 janv. 2008, 02:43

NOTE IMPORTANTE : tu n'es pas nouveau sur le forum. Tu sais donc qu'il faut toujours commencer par une recherche. Dans ce cas, tu aurais trouvé des tas de sujets.
De plus, je suis persuadé que ce que je viens de te dire, nous te l'avons déjà dit (je n'ai ni le temps, ni la patience de faire ces recherches pour toi, mais j'en suis persuadé).
Donc, je voudrais une bonne fois pour toute que tu te bouge et que tu essayes de comprendre ce qu'on te dit et que tu arrêtes de nous prendre pour des débugeurs.
J'insiste également sur cette note !!
(j'allais faire la même remarque)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 88 Messages

09 janv. 2008, 18:51

J'ai corrigé mes erreurs, mais la requete affiche toujours la même erreur. MAIS dés que $rue_1 ne contient plus de d'apostrophe il n'y a plus d'erreur donc l'erreur est généré à cause de '

Comment faire pour que même si $rue_1 contient un apostrophe je puissent entrer $rue_1 avec son apostrope

$rue_1 à pour valeur rue de la ty\'nes il y a donc bel et bien le \...

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Mammouth du PHP | 1339 Messages

09 janv. 2008, 18:56

addslashes() ?
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphant du PHP | 88 Messages

09 janv. 2008, 19:33

MERCI j'ai donc appliquer ça de cette facon et sa marche :
$req_adresse = "SELECT numero_rue_1, rue_1, code_postal_1, ville_1, pays_1, batiment_1, etage_1, porte_1 FROM inscription WHERE numero_rue_1 = '".$select_numero_rue_1."' AND rue_1 = '".addslashes($select_rue_1)."' AND code_postal_1 = '".$select_code_postal_1."' AND ville_1 = '".$select_ville_1."' AND pays_1 = '".$select_pays_1."' AND batiment_1 = '".$select_batiment_1."' AND etage_1 = '".$select_etage_1."' AND porte_1 = '".$select_porte_1."' AND identifiant != '".$identifiant."'";
rue_1 = '".addslashes($select_rue_1)."'
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 janv. 2008, 21:03

Mais tu te fous de nous ou quoi ???

:arrow: http://www.phpfrance.com/forums/viewtop ... ht=#226885
Quelle est la solution que nous t'avons donné dans ce post ?

Quand on te donne une solution, c'est pas une rustine, c'est une bonne pratique de développement.
Nous sommes déjà arrivé à clôturer tout tes posts, on peut recommencer :evil:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer