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

PHP & Base de données Discussion :

affectation de variables dans requete sql


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 74
    Par défaut affectation de variables dans requete sql
    Bonjour,

    Malgré de longues heures de recherche, je n'arrive pas à trouver la syntaxe d'un DELETE ou d'un SELECT.
    JE METS LES VARIABLES SUIVANTES :
    $c = table de la bdd
    $n = nom
    $p = prenom

    Je voudrais écrire la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse = $bdd->query(DELETE FROM '.$c.' WHERE Nom ='.$n.'   AND  Prenom = '.$p.');
    ou éventuellement par une requête préparée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse = $bdd -> prepare (......................)
    Quelqu'un peut-il me dépanner svp?
    D'avance MERCI.

  2. #2
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 74
    Par défaut
    merci de l'adresse.
    Je vais approfondir les subtiités sql.
    les quotes, double cotes etc n'auront plus de secret pour moi

  4. #4
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 74
    Par défaut
    Je n'arrive vraiment pas à percer le mystère des guillemets ou apostrophes malgré la lecture que l'on m'a conseillée.
    Requêtes qui ne marchent pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $bdd->exec(DELETE FROM  ".$_POST['$c']." WHERE PrénomMembre = ".$_POST['$p']." AND NomMembre = ".$_POST['$n']." );
    $bdd->exec('DELETE FROM  ".$_POST['$c']." WHERE PrénomMembre = ".$_POST['$p']." AND NomMembre = ".$_POST['$n']." ');
    $bdd->exec('DELETE FROM  $_POST['$c'] WHERE PrénomMembre = $_POST['$p'] AND NomMembre = $_POST['$n'] ');
    S'il vous plait, j'aurai vraiment besoin d'un coup de mains.

  5. #5
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Bonjour

    Citation Envoyé par marjan Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bdd->exec('DELETE FROM  ".$_POST['$c']." WHERE PrénomMembre = ".$_POST['$p']." AND NomMembre = ".$_POST['$n']." ');
    Quand tu commences avec un ' il faut fermer avec un ' (même règle pour le guillemet).

    Et donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bdd->exec("DELETE FROM ".$_POST['$c']." WHERE PrénomMembre = '".$_POST['$p']."' AND NomMembre = '".$_POST['$n']."'");
    Tu définis en fait des sous-chaînes qui seront concaténées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bdd->exec("SOUS-CHAINE 1" . "SOUS-CHAINE 2" . "SOUS-CHAINE 3");
    Ceci compris, tu dois penser à tes critères : c'est du texte et donc quelque chose comme WHERE NomMember='NESTOR' ==> "WHERE NomMember='".$_POST['$n']."'"Note: je programme toujous en anglais aussi je suis étonné de voir que tu as un nom de champ avec un accent. Est-ce que PrénomMembre est réellement une colonne ? (je n'ai jamais testé; préférant ici FirstName)

    Note bis (en gras) : Ton code comme ci-dessus est extrêmement dangereux car pas sécurisé. Si tu as réellement quelque chose comme ça, jete un oeil à la technique dite SQL Injection. Là, en principe, avec ton code, je pourrais attaquer ton script PHP et p.ex. supprimer l'intégralité de ta base de données en injectant un DROP DATABASE comme ... nom de famille.

    Bonne journée.

  6. #6
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 74
    Par défaut
    Merci à tous pour les conseils.

    Lorsque je mets textuellement (couper-coller) l'écriture proposée, j'ai l'erreur suivante :

    Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE PrénomMembre = '' AND NomMembre = ''' at line 1 in /customers/5/4/0/lXXXXXXX.fr/httpd.www/effacer.php:18 Stack trace: #0 /customers/5/4/0/XXXXXXXXXX.fr/httpd.www/effacer.php(18): PDO->exec('DELETE FROM WH...') #1 {main} thrown in /customers/5/4/0/XXXXXXXXXX.fr/httpd.www/effacer.php on line 18
    D'autre part, les accents dans le nom des colonnes ne m'ont jamais posé problème.
    J'ai un tas de scripts qui utilisent prénomMembre et ça fonctionne.
    Ça m'embête de changer le nom de la colonne, car j'ai vraiment un tas de scripts qui se servent de PrénomMembre.

    Enfin, lorsque la syntaxe sera comprise, je changerai bien évidemment la requête en requête préparée pour plus de sécurité.

Discussions similaires

  1. Variable dans requete sql
    Par cisco59 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 18/09/2018, 08h37
  2. [MySQL] Syntaxe insertion variable dans requete SQL
    Par przvl dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/06/2015, 15h34
  3. variable dans requete SQL pour delphi
    Par socooooool dans le forum Bases de données
    Réponses: 9
    Dernier message: 25/01/2013, 11h27
  4. variable dans requete sql
    Par xian21 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/01/2009, 12h14
  5. [Debutant] Variables dans requete SQL
    Par Freygolow dans le forum C#
    Réponses: 11
    Dernier message: 21/05/2008, 09h14

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