Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 01/12/2007, à 19:55

hello_world

Guillemet en sql

Hello,

malgré de nombreuses pages consultées, je galère avec mes guillemets et mes requête sql (sqlite). J'aimerais juste que qqun puisse écrire un texte, et pouvoir l'afficher sur une autre page. Donc dans la première page j'ai qqch du genre :

$prenom=sqlite_escape_string($_POST["prenom"]);
$nom=sqlite_escape_string ($_POST["nom"]);
$texte=sqlite_escape_string ($_POST["texte"]);
sqlite_query($db,"INSERT INTO entree (clef,prenom,nom,texte) VALUES (NULL, '".$prenom."','".$nom."','".$texte."')");

et dans la page d'affichage:

echo $val["nom"];

Cela marche parfaitement tant qu'il n'y a pas de guillemet, mais dès qu j'en rajoute, il y a des \' dans la texte d'arrivée. J'ai bien entendu essayé d'enlever les sqlite_escape_string, mais j'ai alors évidemment une erreur au moment de l'importation du texte si ce dernier contient des guillemets.

Existe-t-il une solution simple à  ce problème? Merci!

++

Hors ligne

#2 Le 02/12/2007, à 22:56

hello_world

Re : Guillemet en sql

UP,

j'ai passé tout le site en mysql (je n'ai pas trouvé d'hébergeur avec sqlite), mais j'ai toujours le même problème sad

++

Hors ligne

#3 Le 03/12/2007, à 12:48

Tonio

Re : Guillemet en sql

Les magic_quotes doivent être activées, non ?

Hors ligne

#4 Le 03/12/2007, à 13:10

hello_world

Re : Guillemet en sql

Hello,

Mais alors le code dépend de l'hébergeur?

Actuellement j'ai supprimer les escape_string, et ça fonctionne (donc sur le site). Par contre en local ça me fait des erreurs. Pourtant les magic_quotes sont bien activé.


Bref, vu que ça marche maintenant, même si je n'ai pas compris pourquoi, je vais laisser tomber la compréhension globale du problème.

++

Hors ligne

#5 Le 03/12/2007, à 14:07

bipede

Re : Guillemet en sql

Dans SQLITE lorsqu'on passe une chaîne avec apostrophe par une requête SQL on doit doubler l'apostrophe :

"l'arbre"

doit être passé comme ça :

"l''arbre"

Desktop: MSI - Intel® Core™ i5-3330 CPU @ 3.00GHz × 4 - RAM 8 go- Kubuntu 21.04 - Système sur SSD 64 Go - /home sur HDD 500 Go.
Laptop: DELL Inspiron-15 3567 - Intel® Core™ i5-7200 CPU @ 2.50GHz × 4 - RAM 8 go - HDD 1 To - Ubuntu 20.10 avec /home séparé.

Mon site: Les contributions du bipède

Hors ligne

#6 Le 03/12/2007, à 17:02

hello_world

Re : Guillemet en sql

Hello,

En quoi cela m'aide-t-il? C'est précisément ce que fait la fonction escape_string que j'utilise. Le problème vient lors de la sortie de la base de donnée.

++

Hors ligne

#7 Le 03/12/2007, à 17:26

bipede

Re : Guillemet en sql

Je ne suis pas un spécialiste de php, mais il me semble que sqlite_escape_string() fait plus que doubler les apostrophes, mais encode purement et simplement ta chaine.
Si tu la veux en clair en retour, tu dois donc la décoder avec sqlite_udf_decode_binary() ce que sqlite ne fait pas automatiquement...

Dernière modification par bipede (Le 03/12/2007, à 17:27)


Desktop: MSI - Intel® Core™ i5-3330 CPU @ 3.00GHz × 4 - RAM 8 go- Kubuntu 21.04 - Système sur SSD 64 Go - /home sur HDD 500 Go.
Laptop: DELL Inspiron-15 3567 - Intel® Core™ i5-7200 CPU @ 2.50GHz × 4 - RAM 8 go - HDD 1 To - Ubuntu 20.10 avec /home séparé.

Mon site: Les contributions du bipède

Hors ligne