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

PostgreSQL Discussion :

problème de guillemet sous postgresql (requete php)


Sujet :

PostgreSQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 112
    Points : 59
    Points
    59
    Par défaut problème de guillemet sous postgresql (requete php)
    salut,
    j'ai un sacré problème de guillemet dans mes requetes INSERT, etc... en fait j'ai un formulaire avec des champs de saisie que j'insére dans ma base avec des scripts PHP, ces champs peuvent recevoir des chaînes de caractères avec des cotes ou des apostrophes ou des guillemets, at ça, ça m'a posé probléme et chaque fois j'ai une erreur type :

    ERROR: syntax error at or near "un mot avec des cotes" at character ...

    y'a t-il qq'un qui a déjà connu ce type de probleme ou qui a une solution.

    merci d'avance.

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Voici comment moi je fais et ça marche très bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql9 = "INSERT INTO adresse (idparticipant, adrrue, adrnumero, ) VALUES ($id[0],'$_SESSION[RueUrgence]','$_SESSION[NUrgence]')";
     
    			 if (pg_query($Connect,$sql9)) {echo 'insertion 9 OK'."<br>"; }
    tu remarqueras que toutes mes variables sont entourés d'apostrophe sauf ce qui est de type 'Integer' comme $id[0].

    Voila

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 112
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par MaitrePylos
    tu remarqueras que toutes mes variables sont entourés d'apostrophe sauf ce qui est de type 'Integer' comme $id[0].
    Voila
    t'es sur que ça marche si ta variable $_SESSION[RueUrgence] contient la valeur :
    rue des "boys"
    ou
    rue des 'boys'

    ???

    moi j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $SQL_ajout = "INSERT INTO commentaire (comment_id,numero_revision, langue,commentaire) VALUES "."(".$le_id.",".$revision.",'".$langue."'".",'".$_POST['commentaire']."')";
    si $_POST['commentaire'] contient --test-- ou --"test"-- ça pass, mais si ça contient --test de l'info--....ça coince !!

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Citation Envoyé par toome

    t'es sur que ça marche si ta variable $_SESSION[RueUrgence] contient la valeur :
    rue des 'boys'
    Ici c'est sans problème

    Citation Envoyé par toome
    si $_POST['commentaire'] contient --test-- ou --"test"-- ça pass, mais si ça contient --test de l'info--....ça coince !!
    moi ça passe , no problème

    Citation Envoyé par toome
    rue des "boys"
    alors ici, j'arrive à le rentré dans la bdd mais pas à récupéré l'information???
    Citation Envoyé par toome
    moi j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $SQL_ajout = "INSERT INTO commentaire (comment_id,numero_revision, langue,commentaire) VALUES "."(".$le_id.",".$revision.",'".$langue."'".",'".$_POST['commentaire']."')";
    et moi je ferais ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $SQL_ajout = "INSERT INTO commentaire (comment_id,numero_revision, langue,commentaire) VALUES (".$le_id.",".$revision.",'".$langue."','".$_POST[commentaire]."')";
    dis moi ce que tu en penses!

    MaitrePylos

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 112
    Points : 59
    Points
    59
    Par défaut
    il y a un qui m'a soufflé une reponse, c'est la fonction addslashes(), je l'ai testé et ça marche mai ça coince autrement
    viens rejoins nous ici :
    http://www.developpez.net/forums/vie...159242#2159242

    pour le $_POST[commentaire] ça rale si tu mets pas les cotes ou guillemets pour commentaire = $_POST['commentaire']

  6. #6
    Membre averti

    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 338
    Points : 404
    Points
    404
    Par défaut
    Il faut utiliser la fonction pg_escape_string
    qui est plus adapter que addslashes()
    Christophe Chauvet
    Consultant Odoo
    Python / PostgreSQL

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 112
    Points : 59
    Points
    59
    Par défaut
    bonjour,

    en fait mon problème actuelle est indépendant du addslashs ou autre, ma base sous postgresql est codée (ou encodéen j'en sais rien !!) en UNICODE, mes pages Web le sont en iso-8859-1, et là je n'arrive pas à insérer des caractères tel que le "à" ou le "ô" ou le "û"....!!! j'ai tjrs ce msg d'erreur :

    ERROR: invalid byte sequence for encoding "UNICODE": 0xe0

    je sais pas comment résoudre ce problème, j'ai regardé sur le net et jsui devenu un peu

    Help.

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Citation Envoyé par toome
    postgresql est codée (ou encodéen j'en sais rien !!) en UNICODE, mes pages Web le sont en iso-8859-1,
    et que penses tu des commandes utf8-encode() et utf8-decode()

    MaitrePylos

  9. #9
    Membre averti

    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 338
    Points : 404
    Points
    404
    Par défaut
    Si ta base est en UNICODE, il faut donc lui préciser dans quel encodage est ton client (PHP) en utilisant pg_set_client_encoding()

    L'encodage client demandé. Un de ces constantes : SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW, UNICODE, MULE_INTERNAL, LATINX (X=1...9), KOI8, WIN, ALT, SJIS, BIG5 ou WIN1250.

    La liste exacte des encodages disponibles dépend de votre version PostgreSQL, alors vérifiez votre manuel PostgreSQL pour une liste plus spécifique.
    Christophe Chauvet
    Consultant Odoo
    Python / PostgreSQL

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 112
    Points : 59
    Points
    59
    Par défaut
    merci à toutes et à tous !
    en fait, j'ai just spécifié dans mes page le charset=utf-8, et ça marche.

    si personne ne me déconseille cette solution je ne vais pas tarder à cliquer sur le bouton RESOLU !!

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

Discussions similaires

  1. Problème de se connecter à postgresql avec php
    Par amnay dans le forum Installation
    Réponses: 4
    Dernier message: 25/06/2012, 14h28
  2. [PostGreSQL] problème de connexion sous PHP-IIS
    Par abambad dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/05/2008, 14h44
  3. Réponses: 2
    Dernier message: 26/03/2008, 00h01
  4. Problème de perfs Sous requetes IN
    Par ias83 dans le forum SQL
    Réponses: 4
    Dernier message: 15/06/2005, 12h39
  5. Création d'utilisateur sous PostgreSQL 7.3.2 avec PHP
    Par duongkhang dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 06/06/2003, 13h10

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