Requete sql ne me comprend pas ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Requete sql ne me comprend pas ?

par AB » 05 févr. 2008, 03:47

J'en profite pour dire qu'il y a dans la faq (ou les tutos) un sujet qui traite des premiers débugages à faire quand une requête ne fonctionne pas comme prévu.

Entre autre si tu mets ta requête dans une variable (ce qui est conseillé) avant d'effectuer ta requête ex
$reponse = "SELECT * FROM imprimante WHERE ip="$adip"";
$query_reponse =  mysql_query("$reponse");
En faisant un echo de ta requête cela t'aurais permis de constater que ta variable n'est pas interprétée correctement si tu fais :
$reponse = "SELECT * FROM imprimante WHERE ip="$adip"";
echo $reponse;
//$query_reponse =  mysql_query("$reponse");

Sinon j'aime bien ton titre :lol: mais essaies quand même d'être plus explicite la prochaine fois :wink:


EDIT Et penses aux deux remarques précédentes. Truc t'a donné le principe mais encore faut-il qu'avant ta requête tu aies défini $adip . Pour que cela marche à tous les coups, il vaut mieux faire
$adip = get_magic_quotes_gpc()?  $_POST['adip'] : addslashes($_POST['adip']) ;
Ensuite si tu fais une requête avec des données sensibles il faudra t'intéresser à mysql_real_escape_string()

par Hywan » 04 févr. 2008, 15:19

Attention à ne pas confondre avec le register_globals. Mais oui, il est à off depuis PHP 4.2.0.
On estime que $adip vaut addslashes($_POST['adip']) par exemple.
Mais Truc a trouvé la bonne solution, le problème de concaténation, entourer de simples quotes.

par MrPinkfr » 04 févr. 2008, 13:17

Salut,

2eme hypothese, comment lis-tu la variables en provenance de ton formulaire ?
A priori, je vois un "where ip=$variable"....

Cela ne fonctionne plus depuis php4 (si mes souvenirs son bons). Il faut :

Code : Tout sélectionner

"where ip=".$_POST['variable']." suite de la requete"
@+

par Truc » 01 févr. 2008, 13:56

Ce qui aide pas mal sur un forum en cas d'erreur c'est le message d'erreur en question 8-)

Mais apparemment il y a un souci de concaténation et manque de délimiteur de chaine de caractères (=apostrophe) ici :
$sql = "SELECT * FROM imprimante WHERE ip = '".$adip."'";
$reponse = mysql_query();

Requete sql ne me comprend pas ?

par Dbzes » 01 févr. 2008, 13:36

Bonjour;

SGBD:2.6.1

J'explique mon sujet je desire faire une recherche d'info dans ma base de donné et d'y afficher des données en fonction de ce que je tape dans un forumulaire.

Voici le formulaire :

Code : Tout sélectionner

<form method="get" action="index.php"> <input type="text" name="adip" />&nbsp;<input type="submit" value="Rechercher" />
Donc par exemple j'entre dans mon formulaire "toto", donc une variable $adip=toto se cré lorsque je clique sur "rechercher".

Je voudrais ensuite que la base sql se serve de cette valeur pour faire ma recherche donc j'ai ecrit :

Code : Tout sélectionner

$reponse = mysql_query("SELECT * FROM imprimante WHERE ip="$adip""); while ($donnees = mysql_fetch_array($reponse) ) {...
mais le probleme c'est que apparament , je narrive pas a obtenir :

$reponse = mysql_query("SELECT * FROM imprimante WHERE ip='toto'");

et du coup ca me cause un message derreur et je ne voit pas comment faire merci pour votre aide