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 :

Parse error - Requête insertion BDD


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 21
    Par défaut Parse error - Requête insertion BDD
    Bonjour,


    lorsque je veux insérer une ligne dans ma BDD, j'ai cette erreur :

    Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\wamp\www\WEB\insert_location.php on line 83

    Après avoir essayé de différentes manières, je ne vois pas ce qui cloche dans mon code (quand je mets des valeurs fixes ça fonctionne bien) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $nombreDeLigne = $connexion->exec('INSERT INTO client(nom,prenom,date_naissance,email,tel,date_permis) VALUES("'.
     
    $_SESSION['nom'].'","'.$_SESSION['prenom']'","'.$date_nais.'","'.$_SESSION['mail'].'","'.$_SESSION['tel'].'","'.
     
    $date_permis.'")');
     
    if ($nombreDeLigne==1){
    	echo "L'enregistrement a bien ete effectue !";
    }



    Merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Avec les requêtes non préparées il faut utiliser la fonction quote pour protéger les variables dans la requête.

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il manque un point :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    . $_SESSION['prenom'] . '","
    Cependant la remarque d'ABCIWEB est vraie.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 21
    Par défaut
    En effet.. merci


    Citation Envoyé par ABCIWEB
    Avec les requêtes non préparées il faut utiliser la fonction quote pour protéger les variables dans la requête.
    Merci pour l'info. La méthode que j'ai utilisé peut poser un problème de fonctionnement ?

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Par exemple si tu as un utilisateur N'Guyen ça va rater.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 21
    Par défaut
    Ah oui d'accord je vois !
    Mais j'ai testé et ça fonctionne pourtant bien, même avec un utilisateur dont le nom contient un " ' ".

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Mon exemple n'est pas bon dans ton cas ... disons que si quelqu'un saisie super"toto, ça va rater.
    Quand je dis rater, c'est le moins grave : ne pas protéger les données conduit vers les injections malveillantes.
    Bref, il faut prendre en compte tout ça.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Pour détailler un peu plus la fonction quote permet d'échapper des caractères qui provoqueraient une rupture de la chaine de la requête. Dans le meilleur des cas cela provoque une erreur mais certains (pirates) pourraient profiter de l'occasion pour modifier la requête et l'on parle alors d'injection sql. Donc pour une requête standard (non préparée) il faut prendre l'habitude d'utiliser cette fonction sur chaque variable.

    Concernant les requêtes préparées, c'est le fait de lier les variables à des marqueurs qui permet d'isoler les variables de la requête et dans ce cas on utilise pas la fonction quote.

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 21
    Par défaut
    D'accord je note, merci pour l'info.
    Dans mon cas c'est juste pour un petit projet en local donc ce n'est pas très grave.

  10. #10
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Citation Envoyé par Skilly- Voir le message
    Dans mon cas c'est juste pour un petit projet en local donc ce n'est pas très grave.
    Bah en plus de l'insécurité tu risques des dysfonctionnements.
    J'insiste un peu car il faut savoir que la non utilisation de cette fonction sur les variables dans des requêtes non préparées fait partie du haut du top ten de ce qu'il ne faut pas faire dans un site web
    Effectivement dans certains cas cela ne pose pas de pb mais si tu commence à négliger des choses aussi essentielles il est probable que tu rencontre de nombreuses difficultés pour avoir un code final fonctionnel, même en local

Discussions similaires

  1. Insert bdd "SQL error: no such function: read"
    Par lenny32 dans le forum SQLite
    Réponses: 5
    Dernier message: 27/06/2009, 02h29
  2. Problème insertion de données : parse error
    Par snaxisnake dans le forum Langage
    Réponses: 2
    Dernier message: 19/02/2008, 15h56
  3. [Système] Parse error sur exécution requête
    Par Sytchev3 dans le forum Langage
    Réponses: 1
    Dernier message: 31/07/2007, 17h48
  4. [Système] Parse error sur requete INSERT
    Par gids01 dans le forum Langage
    Réponses: 4
    Dernier message: 17/04/2007, 16h54
  5. Insert = parse error
    Par gids01 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 17/04/2007, 16h22

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