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

Langage PHP Discussion :

Insertion de simples cote dans une table


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Par défaut Insertion de simples cote dans une table
    Salut,

    Voilà j'ai crée un formulaire d'ajout pour insérer des données (du texte) dans ma table SQL.

    Le problème c'est que quand mon texte contient des ' la requête d'insertion me retourne une erreur.

    Comment pourrais-je résoudre ce problème ?

    merci !!!

  2. #2
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    salut,

    tu dois utiliser la fonction addslashes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $data = addslashes( $data_initial );
    $requete = "INSERT INTO my_table VALUES( '', '$data' )";
    $result = mysql_query( $requete );
    Edit : petite modif

  3. #3
    Membre éclairé Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Par défaut
    Salut, maintenant il gueule à cause des simples cote dans la syntaxe de la requête elle-même

    exemple ici :

    SET texteChamp1='$texte'
    merci!

  4. #4
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    peux tu montrer un peu plus de code ?

  5. #5
    Membre éclairé Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $modifob="UPDATE observation SET texteObservation='$obs1', poursuiteObservation='$obs2' WHERE nomEtudiantObservation='$nom' AND prenomEtudiantObservation='$prenom' AND semestreEtudeId=$idsemestre";
    $modifobs=addslashes($modifob);
    $req = mysql_query($modifobs) or die('Erreur SQL !<br>'.$modifobs.'<br>'.mysql_error());
    Il gueule à cause des simples côtes qui entoure les variables textuelle dans la requête

    Exemple ici :

    SET texteObservation='$obs1'
    Erreur :

    Erreur SQL !
    UPDATE observation SET texteObservation=\"$obs1\", poursuiteObservation=\"$obs2\" WHERE nomEtudiantObservation=\"$nom\" AND prenomEtudiantObservation=\"$prenom\" AND semestreEtudeId=$idsemestre
    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 '\"$obs1\", poursuiteObservation=\"$obs2\" WHERE nomEtudiantObservation=\"$nom\" ' at line 1

  6. #6
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $obs1 = addslashes( $obs1 );
    $obs2 =  addslashes( $obs2 );
    $nom =  addslashes( $nom );
    $prenom =  addslashes( $prenom );
    $modifob="UPDATE observation SET texteObservation='$obs1', poursuiteObservation='$obs2' WHERE nomEtudiantObservation='$nom' AND prenomEtudiantObservation='$prenom' AND semestreEtudeId=$idsemestre";
    $req = mysql_query($modifobs) or die('Erreur SQL !<br>'.$modifobs.'<br>'.mysql_error());

  7. #7
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Re

    Faut utiliser la fonction mysql_real_escape_string()
    -> La doc (comme d'had ) : http://fr2.php.net/manual/fr/functio...ape-string.php

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // Une variable $variable qui contiendrait cette chaine : Et l'affaire est réglé
    mysql_query('INSER INTO table (champ1) VALUES (\''.mysql_real_escape_string($variable).'\')');
     
    //Ou
    mysql_query("INSER INTO table (champ1) VALUES ('".mysql_real_escape_string($variable)."')");
    Mais de nos jour il y a une classe PDO qui permet de faire des requêtes préparées, du coup se simplifier la tâche avec tout ces histoires de quote et d'injection SQL.
    Exemple :
    $pdo = new PDO( bla bla bla );
    $sth = $dbh->prepare('INSER INTO table (champ1) VALUES (:valeur1)');
    $sth->bindValue(':valeur1', $variable, PDO:ARAM_STR);
    $sth->execute();

Discussions similaires

  1. Problème de simple cote dans une requete
    Par NinNin79 dans le forum Hibernate
    Réponses: 2
    Dernier message: 30/10/2007, 10h29
  2. Réponses: 6
    Dernier message: 09/07/2007, 15h39
  3. [Débutant] Insertion d'un blob dans une table
    Par Rakken dans le forum SQL
    Réponses: 3
    Dernier message: 15/05/2007, 14h27
  4. [MySQL] Insertion de code HTML dans une table, avec UPDATE
    Par Daedalus31 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 05/02/2007, 12h19
  5. Réponses: 7
    Dernier message: 27/01/2006, 15h57

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