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 :

sql et texte avec guillemets


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Points : 145
    Points
    145
    Par défaut sql et texte avec guillemets
    Bonjour,

    J'insère dans une table mysql du texte contenant des guillemets.
    Lors de l'ordre INSERT INTO la requête sort en erreur car il y a un mélange de guillemets du texte et de guillemets de la requête.
    Existe t'il une fonction sql qui ignorerait les guillemets d'un texte à insérer ?

    Merci pour vos suggestions.

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    mysql_real_escape_string 8)

  3. #3
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    pour les requetes SQL si
    tu as des " tu dois les antislashe avec addslashes
    sinon si tu as des ' il faut que tu les doubles, le mieux dans ce cas la est d'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    replace("'","''",$montexte)
    mais je pense qu'avec un peu de recherche tu aurais pu le trouver

  4. #4
    Membre éclairé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Points : 878
    Points
    878
    Par défaut
    y'a plus simple tu fait un addslashes de ton texte et apres tu fait un stripslashes a l'affichage et tu n'aura plus a tesoucier des probleme de " et '

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    argggh vous vous compliquez la vie et il y a des caractères spéciaux pour mysql, que addslashes ne protège pas, et qui permettent une injection sql...

    Et normalement un addslashes pour insertion dans la bd ne devrait pas nécessiter de stripslashes au sortir de celle-ci.

  6. #6
    Membre éclairé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Points : 878
    Points
    878
    Par défaut
    Citation Envoyé par Mr N.
    argggh vous vous compliquez la vie et il y a des caractères spéciaux pour mysql, que addslashes ne protège pas, et qui permettent une injection sql...

    Et normalement un addslashes pour insertion dans la bd ne devrait pas nécessiter de stripslashes au sortir de celle-ci.
    CHez free si .

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Ah ? intéressant. Que vaut magic_quotes_runtime ?

  8. #8
    Membre éclairé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Points : 878
    Points
    878
    Par défaut
    Citation Envoyé par Mr N.
    Ah ? intéressant. Que vaut magic_quotes_runtime ?
    Justement c'est à cause de ca il est désactivé chez eux. Mais sur mon esayphp ca marche sans les stripslashes. Mais bon c'est toujours mieu de les mettre dans le cas ou le site se ballade de serveur en serveur (comme ca ca marche partout).

  9. #9
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Que vaut magic_quotes_runtime chez free ?

    Sinon je suis pas trop d'accord de le mettre partout à l'aveugle

    si je rentre explicitement ceci :
    chez toi apres le addslashes, dans la bd on a :
    si tu ressors le truc, tu fais un stripslashes dessus et tu te retrouves avec

    Alors que chez free, quand tu ressors de mysql tu te retrouves avec
    plus le stripslashes :
    A confirmer bien sur...

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Points : 145
    Points
    145
    Par défaut
    Citation Envoyé par Mr N.
    mysql_real_escape_string 8)
    Ca ne marche pas.
    Voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	$requete_infojour = 'UPDATE infojour SET ij_titre = "'.$titre.'",ij_texte = "'.$texte.'" ,ij_date = "'.$date.'" ,ij_ligne = "'.$ligne.'" WHERE ij_id = '.$ident_ij.' AND ij_pijid = '.$ident_ag;
    	mysql_real_escape_string($ij_titre);
    	mysql_real_escape_string($ij_texte);
    	$resultat_infojour = mysql_query($requete_infojour,$base);
    	controle_table($resultat_infojour,$requete_infojour);
    Ma fonction jscript qui initialise un lien à intégrer dans un champ texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		monlien = "&nbsp;\<a href=http://"+document.getElementById('lien').value+"/>"	
    					+document.getElementById('saisielien').value+"</a>"; 
    		document.getElementById('ij_texte').innerHTML += monlien;
    La requête échoue sur l'insertion de texte dans ij_texte.
    Je ne comprends pas

  11. #11
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $requete_infojour = 'UPDATE infojour SET ij_titre = "'.mysql_real_escape_string($titre).'",ij_texte = "'.mysql_real_escape_string($texte).'" ,ij_date = "'.$date.'" ,ij_ligne = "'.$ligne.'" WHERE ij_id = '.$ident_ij.' AND ij_pijid = '.$ident_ag;
    $resultat_infojour = mysql_query($requete_infojour,$base);
    controle_table($resultat_infojour,$requete_infojour);

  12. #12
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    au fait c'est des quotes et pas des guillemets qu'il faut utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete_infojour = "UPDATE infojour SET ij_titre = '".mysql_real_escape_string($titre)."',ij_texte = '".mysql_real_escape_string($texte)."' ,ij_date = '".$date."' ,ij_ligne = '".$ligne."' WHERE ij_id = '.$ident_ij.' AND ij_pijid = '.$ident_ag;
    ....

  13. #13
    Membre éclairé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Points : 878
    Points
    878
    Par défaut
    Citation Envoyé par Mr N.
    Que vaut magic_quotes_runtime chez free ?

    Sinon je suis pas trop d'accord de le mettre partout à l'aveugle

    si je rentre explicitement ceci :
    chez toi apres le addslashes, dans la bd on a :
    si tu ressors le truc, tu fais un stripslashes dessus et tu te retrouves avec

    Alors que chez free, quand tu ressors de mysql tu te retrouves avec
    plus le stripslashes :
    A confirmer bien sur...
    Mon site en test est actuellement chez free et stripslashes addslashes marche nickel .

    J'ai copier coller ton post et l'ai poster comme une news et regarde ce que ca affiche :

    http://manganime.0.free.fr/index.php

  14. #14
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Et chez toi ca donne quoi ?

  15. #15
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Ehh mais ca marche pas !
    je retrouve pas \' !!!

  16. #16
    Membre éclairé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Points : 878
    Points
    878
    Par défaut
    dans la BDD j'ai ca lol:

    Que vaut magic_quotes_runtime chez free ?

    Sinon je suis pas trop d\'accord de le mettre partout à l\'aveugle

    si je rentre explicitement ceci :
    Code:
    \\\'


    chez toi apres le addslashes, dans la bd on a :
    Code:
    \\\'

    si tu ressors le truc, tu fais un stripslashes dessus et tu te retrouves avec
    Code:
    \'
    Sad

    Alors que chez free, quand tu ressors de mysql tu te retrouves avec
    Code:
    \\\\\\\'

    plus le stripslashes :
    Code:
    \\\'


    A confirmer bien sur...

  17. #17
    Membre éclairé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Points : 878
    Points
    878
    Par défaut
    Par contre je viens de faire un test avec

    "text" 'text'
    et ca affiche bien ce qu'il faut.

    Apres dans mon cas je ne pense pas que je me trouverais dans un cas ou mes posteur mettrons des \' ou des \" dans leur text.

  18. #18
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    je l'espère pour toi

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Points : 145
    Points
    145
    Par défaut
    Citation Envoyé par Mr N.
    au fait c'est des quotes et pas des guillemets qu'il faut utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete_infojour = "UPDATE infojour SET ij_titre = '".mysql_real_escape_string($titre)."',ij_texte = '".mysql_real_escape_string($texte)."' ,ij_date = '".$date."' ,ij_ligne = '".$ligne."' WHERE ij_id = '.$ident_ij.' AND ij_pijid = '.$ident_ag;
    ....
    Ca fonctionne presque très bien.
    Le seul problème qui persiste concerne les espaces.
    Il tronque après le premier espace. :

  20. #20
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    exemple ?

Discussions similaires

  1. Importer un fichier texte avec SQL Express
    Par hannii dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/03/2007, 10h26
  2. Query.SQL.Text avec la valeur des paramètres
    Par Guile dans le forum Bases de données
    Réponses: 3
    Dernier message: 04/02/2007, 11h13
  3. Réponses: 10
    Dernier message: 30/11/2006, 23h06
  4. Réponses: 3
    Dernier message: 22/10/2006, 23h15
  5. afficher texte avec retour chariot aprèq requète sql
    Par frenchy371 dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/01/2004, 17h33

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