Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/08/2005, 13h51   #1
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 112
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 112
Points : 28
Points : 28
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.
toome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2005, 14h04   #2
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 182
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 182
Points : 6 469
Points : 6 469
Voici comment moi je fais et ça marche très bien

Code :
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
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2005, 14h22   #3
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 112
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 112
Points : 28
Points : 28
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 :
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 !!
toome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2005, 14h48   #4
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 182
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 182
Points : 6 469
Points : 6 469
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 :
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 :
$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
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2005, 15h28   #5
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 112
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 112
Points : 28
Points : 28
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/viewtopic.php?p=2159242#2159242

pour le $_POST[commentaire] ça rale si tu mets pas les cotes ou guillemets pour commentaire = $_POST['commentaire']
toome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2005, 17h16   #6
Membre éclairé
 
Inscription : janvier 2005
Messages : 336
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2005
Messages : 336
Points : 353
Points : 353
Il faut utiliser la fonction pg_escape_string
qui est plus adapter que addslashes()
kryskool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2005, 09h49   #7
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 112
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 112
Points : 28
Points : 28
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.
toome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2005, 09h53   #8
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 182
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 182
Points : 6 469
Points : 6 469
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
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2005, 10h35   #9
Membre éclairé
 
Inscription : janvier 2005
Messages : 336
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2005
Messages : 336
Points : 353
Points : 353
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()

Citation:
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.
kryskool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2005, 10h44   #10
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 112
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 112
Points : 28
Points : 28
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 !!
toome est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h44.


 
 
 
 
Partenaires

Hébergement Web