Php/mysql - query improbable (where and)
Résolu
Jer
-
varfendell Messages postés 3259 Date d'inscription Statut Membre Dernière intervention -
varfendell Messages postés 3259 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Ce matin, j'ai pu me faire aider pour la définition de mes variables dans ma requête (requête php > mysql pour interroger une db en fonction du contenu des champs dans un formulaire html (méthode post).
La requête passe bien quand on prend les champs 1 par 1, par exemple avec ceci:
Mais ça coince lorsque je veux les combiner, comme ceci :
Pourquoi la combinaison des critères n'appelle-t-elle donc aucun résultat ?
Merci d'avance !
Ce matin, j'ai pu me faire aider pour la définition de mes variables dans ma requête (requête php > mysql pour interroger une db en fonction du contenu des champs dans un formulaire html (méthode post).
La requête passe bien quand on prend les champs 1 par 1, par exemple avec ceci:
$query = "SELECT * FROM marginalia WHERE margindex LIKE '%".$margindex."%' ORDER BY margindex";
Mais ça coince lorsque je veux les combiner, comme ceci :
$query = "SELECT * FROM marginalia WHERE margindex LIKE '%".$margindex."%' AND nota LIKE '%".$nota."%' AND nota_var LIKE '%".$nota_var."%' AND ref_txt LIKE '%".$ref_txt."%' AND v_v LIKE '%".$v_v."%' AND nombre LIKE '%".$nombre."%' AND main LIKE '%".$main."%' ORDER BY margindex";
Pourquoi la combinaison des critères n'appelle-t-elle donc aucun résultat ?
Merci d'avance !
mysql_connect (etc...) mysql_select_db (etc...) $margindex = mysql_real_escape_string($_POST['margindex']); $nota = mysql_real_escape_string($_POST['nota']); $nota_var = mysql_real_escape_string($_POST['nota_var']); $nota_sup = mysql_real_escape_string($_POST['nota_sup']); $ref_txt = mysql_real_escape_string($_POST['ref_txt']); $ref_1601 = mysql_real_escape_string($_POST['ref_1601']); $t_suj = mysql_real_escape_string($_POST['t_suj']); $lien = mysql_real_escape_string($_POST['lien']); $n_suj = mysql_real_escape_string($_POST['n_suj']); $v_v = mysql_real_escape_string($_POST['v_v']); $nombre = mysql_real_escape_string($_POST['nombre']); $main = mysql_real_escape_string($_POST['main']); $commentaire = mysql_real_escape_string($_POST['commentaire']); $query = "SELECT * FROM marginalia WHERE margindex LIKE '%".$margindex."%' AND nota LIKE '%".$nota."%' AND nota_var LIKE '%".$nota_var."%' AND ref_txt LIKE '%".$ref_txt."%' AND v_v LIKE '%".$v_v."%' AND nombre LIKE '%".$nombre."%' AND main LIKE '%".$main."%' ORDER BY margindex"; $result = mysql_query($query) OR die(mysql_error()); echo (etc...)
5 réponses
-
et as tu essayer ta requête en brut? je veut dire par la, sans passer par le php, directement dans ton éditeur sql?
-
-
-
-
-
Lorsque j'exécute ceci dans l'éditeur :
SELECT * FROM marginalia WHERE margindex LIKE '%".$margindex."%' AND nota LIKE '%".$nota."%' AND nota_var LIKE '%".$nota_var."%' AND ref_txt LIKE '%".$ref_txt."%' AND v_v LIKE '%".$v_v."%' AND nombre LIKE '%".$nombre."%' AND main LIKE '%".$main."%' ORDER BY margindex; echo $query;
J'obtiens ceci :Erreur requête SQL: echo $query; MySQL a répondu: Documentation #1064 - 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 'echo $query' at line 1
J'ai peut-être mal interprété ce que tu me conseillais de faire. :-/
-
-
Au passage, a la place de tous tes mysql_real_escape_string mets ça, tu gagneras de la place ;)
foreach ($_POST as $k=>$v) { $$k = mysql_real_escape_string($v); } -
Bonjour,
est tu sur qu'il existe au moins une ligne que ta requête peut retourner? -
Bonjour,
Tu es sûr que tu ne voudrais pas des OR à la place des AND ?
Xavier -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
teste si tes variables php ne sont pas vides avant d'executer la requete
exple: if((!empty($margindex))and..... )
{
//ta requete
}