IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Passage de paramètre dans un requête Mysql


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 122
    Points : 74
    Points
    74
    Par défaut Passage de paramètre dans un requête Mysql
    j'essai de faire ma première requête en php sur une base mysql

    je récupère deux variables de session que je veux mettre dans une table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $val_1 = $_SESSION['login_user'];
    $val_2 = $_SESSION['login_pas'];
     
    // Connection à la base de données
    $c=mysql_connect($host,$user,$pass) or die("Erreur de connection au serveur !!!");
    mysql_select_db($base,$c) or die("Erreur de connection à la base de données !!!");
     
    // on crée la requête SQL 
    $sql = 'INSERT INTO utilisateur(login, pass) VALUES ($val_1, $val_2)';
    sur l'ordre INSERT, j'ai le message d'erreur
    INSERT INTO utilisateur(login, pass) VALUES ($val_1, $val_2)
    Champ '$val_1' inconnu dans field list

    Merci de votre aide

  2. #2
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 208
    Points : 218
    Points
    218
    Par défaut
    Bonjour,

    pour que les valeurs des variables soient automatiquement remplacées utilisez les doubles guillemets pour creer la requete.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "INSERT INTO utilisateur(login, pass) VALUES ($val_1, $val_2)";

    Sinon il faut concaténer (et backslasher les ' comme ca: \' lorsque vous voulez ecrire un ' dans la requete)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = 'INSERT INTO utilisateur(login, pass) VALUES ('.$val_1.', '.$val_2.')';
    8)

  3. #3
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Citation Envoyé par chat hotplug
    Bonjour,

    ...
    Sinon il faut concaténer (et backslasher les ' comme ca: \' lorsque vous voulez ecrire un ' dans la requete)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = 'INSERT INTO utilisateur(login, pass) VALUES ('.$val_1.', '.$val_2.')';
    8)
    de façon générale j'utilise toujours la concaténation qui à l'avantage d'être lisible
    mais les ' sont utilisé par SQL j'utilise donc "
    mais en plus je conseille vivement d'utiliser les fonction de la librairie sql utilisé pour traiter les paramètres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "INSERT INTO utilisateur(login, pass) VALUES ('".pg_escape_string($val_1)."', '".pg_escape_string($val_2).'")';
    8)[/quote]

    idem avec my_escape_string
    avec les valeur "zac'meur" comme login et "test" comme passe
    on obtient avec la méthode de hotplug
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO utilisateur(login, pass) VALUES (zac\'meur, test);
    avec la solution ci-dessus pour PostgreSQL on aura
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO utilisateur(login, pass) VALUES ('zac''meur', 'test');
    et avec mySQL on aura
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO utilisateur(login, pass) VALUES ('zac\'meur', 'test');
    l'avantage est que tous les caractères qui pose problème à un moteur SQL sont tous traité par la fonction escape_string de sa librairie. alors qu'en le faisant à la main on prendre le risque d'en oublier quelques uns

    A+JYT

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Passage de paramètres dans champ hidden
    Par benassis dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 27/05/2005, 01h22
  2. Réponses: 7
    Dernier message: 18/05/2005, 15h09
  3. Réponses: 9
    Dernier message: 13/05/2005, 03h13
  4. Passage de paramètres dans une requête imbriquée
    Par DrakkoFR dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/02/2005, 12h46
  5. Passage de variable dans une requête
    Par zestrellita dans le forum Langage SQL
    Réponses: 5
    Dernier message: 02/09/2004, 13h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo