PHP Transmettre variable dans une requete SQL
Le code ci-dessous (ce n'est que le début) ne fonctionne pas en raison de la ligne 16 : je n'arrive pas à transmettre la variable $login
convenablement.
Aidez moi a faire le code SVP !
<?php
$login=$_POST[login];
$password = $_POST[Password];
$host = "XXXXXX";
$user = "XXXXXX";
$pass = "XXXXXX";
$bdd = "XXXXXXX";
$connexion = mysql_connect($host,$user,$pass);
mysql_connect($host,$user,$pass) or die("erreur de connexion au serveur $host");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
$sql = 'SELECT `Nom` FROM `Joueurs` WHERE `Prenom`='.$login;
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result ($req);
mysql_close ();
...
(Note de la modération : Le bb-code c'est bien ©)
Fred
13. $sql = 'SELECT `Nom` FROM `Joueurs` WHERE `Prenom`='.$login.';
ta pas bien fermé
Je dirais plutot :
<?php
$sql = "SELECT `Nom` FROM `Joueurs` WHERE `Prenom`='".mysql_real_escape_string($login)."'";
?>
En effet, je pense que Prenom est un champ de type varchar.
Une remarque au passage, qui peut faire en sorte que le script ne fonctionne pas :
<?php
$login=$_POST[login];
$password = $_POST[Password];
// Ceci est mal, il faut écrire ceci :
$login=$_POST['login'];
$password = $_POST['Password'];
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Carrement (je n'ai meme pas lu le code d'origine :/).
Et je complete la réponse de LupusMic : Pourquoi est ce mal ?
Ben si le code contient une constante qui se nomme 'Password' ou 'login', en faisant un $login=$_POST[login]; $login va prendre la valeur de $_POST['la valeur de la constante login'] et cela peut jouer des tours.
(Expérience vécue lors de mes débuts en PHP)
Je vous remercie de votre réactivité. Ca fonctionne
Voila un souci probablement lié:
via une page en php je récupère par plusieurs formulaires successif (d'où les variables de session) différentes variables.
Une fois complétée (un peu comme un assistant) à la dernière page je fais vérifier à l'utilisateur tout ce qui a été saisi.
J'affiche donc mes variables de session sans problème. Il y a un bouton valider qui doit m'envoyer sur une page (invisible pour l'utilisateur) qui doit inscrire ce qui a été saisi dans ma base mysql.
Le code extrait de cette page s'exécute bien puisque je retourne grâce à un header à ma page d'accueil mais rien ne s'est inscris dans ma base.
Je suppose que le probleme vient des variables de session qui ne doivent pas être correctement interprétées.
Pouvez vous m'aider à faire le code SVP ?
Voila un extrait du code actuel :
1.session_start();
2.
3.$hmatch = $_POST [heurematch].': 00'; //(permet de convertir au format TIME de mysql)
4.
5.$host = "mon Serveur";
6.$user = "Mon nom utilisateur";
7.$pass = "Mon password";
8.$bdd = "ma base de donnée";
9.$connexion = mysql_connect($host,$user,$pass);
10.mysql_connect($host,$user,$pass) or die("erreur de connexion au serveur $host");
11.mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
12.$req = "INSERT INTO Match (Date,Horaire,Equipe,Stade,Adresse,Code_Postal,Ville) VALUES('$_SESSION[date]','$hmatch','$_SESSION[LeMatch]','$_SESSION[stade]','$_SESSION[addstade]','$_SESSION[CPstade]','$_SESSION[villestade])";
13.mysql_query($req);
14.
15.session_destroy();
16.header("Location: mapageaccueil.php");
PS1 : la variable date est au format "année-mois-jour" (exemple: 2009-07-21)
PS2 : la variable horaire est au format Heures:Minutes:Secondes (exemple : 14:16:23)
Fred
Comment savoir ce qui chie vu que tu n'affiches pas les erreurs SQL (si il y en a) ? :)
Bref, modifie ton mysql_query avec un truc du genre mysql_query($req) or die ($req."\n".mysql_error());
PS : sinon, ce qui chie surement, c'est que tu n'escape pas les variables que tu colles dans ta requete SQL. Utilise
mysql_real_escape_string.
Et svp, utiliser le BB-Code... Je vais craquer un jour...
Désolé si je fais pas bien mais j'apprends tout seul et je m'y suis mis il y a à peine 1 semaine !
Enfin bref voila l'erreur SQL :
INSERT INTO Match (Id,Date,Horaire,Equipe,Stade,Adresse,Code_Postal,Ville,Numero_Terrain,Type,DomExt) VALUES(,'2009-07-15','17:30:00','Dynamo Keke - SM CAEN','lumiere','42 rue jesaispasou','12456','finfonddelafrance','2b','de championnat','Neutre') 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 'Match (Id,Date,Horaire,Equipe,Stade,Adresse,Code_Postal,Ville,Numero_Terrain,Typ' at line 1
Fred
Est ce normal que tu ne nous pastes pas la même requete que tout à l'heure ? :)
En plus, il me semble que l'ajout du champ Id apporte une erreur.
En effet : VALUES(, << la il manque la valeur de l'id.
Sinon, Match doit être un mot reservé de MySQL, donc entoure le nom de ta table avec des backquotes.
C'est le résultat de la requête !
oubliez l'ID je l'ai retiré et j'ai le même résultat.
Fred