Rechercher : dans
Par :

Requete SQL et quotes

Dernière réponse le 22 jun 2009 à 16:47:53 Flatbeat, le 22 jun 2009 à 13:43:15 
 Signaler ce message aux modérateurs

Bonjour,ma question est vraiment idiote :)

Je voudrais faire une requête SQL sans faire de addslashes, comment faut-il écrire la requête ?

exemple :

$chaine = "texte d'emple avec d'es quotes";

$sql2="UPDATE liste_texte
SET texte ='$chaine'
WHERE id_texte ='25'";

Merci d'avance !

Configuration: Windows XP
Firefox 3.0.11

1

Dalida, le 22 jun 2009 à 14:11:43

Salut,

Je voudrais faire une requête SQL sans faire de addslashes, comment faut-il écrire la requête ?
heu…
ben en ajoutant les slashes à la main !

$chaine = "texte d'emple avec d\'es quotes"; 

effectivement, drôle de question…
-:oD
[ Mathieu ]
Il y a sûrement des pandas pour ne dépendre de rien

Répondre à Dalida

2

Flatbeat, le 22 jun 2009 à 14:51:51

Oui mais ma chaine n'est pas tout le temps la même. Le addslashes va rajouter des slashes en table ? En faite il ne doit pas y avoir dans la table, il doit bien y avoir une écriture lors de la requete update spécifique non ?

Répondre à Flatbeat

3

Dalida, le 22 jun 2009 à 15:20:42

Il faut utiliser une fonction pour protéger la BDD, donc addslashes() ou mieux mysqli_real_escape_string().
si tu utilises un PHP > 5.2 tu peux utiliser PDO avec PDO::prepare().

si tu as des slashes en trop à l'affichage, suffit de nettoyer la chaîne avec stripslashes() avant d'afficher.
[ Mathieu ]
Il y a sûrement des pandas pour ne dépendre de rien

Répondre à Dalida

4

cedrad33, le 22 jun 2009 à 15:28:46

Tu dois l'écrire comme sa :

$chaine = "texte d'emple avec d'es quotes";

$sql2="UPDATE liste_texte
SET texte ='".$chaine."'
WHERE id_texte ='25' ";
Prêt à vous aider quand je suis la et quand je le peux :-)

Répondre à cedrad33

5

Dalida, le 22 jun 2009 à 15:35:38

Ce qui nous donne la requête :

UPDATE liste_texte SET texte ='texte d'emple avec d'es quotes' WHERE id_texte ='25'

et donnera une belle erreur puisque l'apostrophe de la phrase va fermer l'apostrophe de la requête, d'où l'intérêt d'échapper les apostrophes avec une fonction comme addslashes()…
[ Mathieu ]
Il y a sûrement des pandas pour ne dépendre de rien

Répondre à Dalida

6

cedrad33, le 22 jun 2009 à 15:40:49

Nagatif si tu regarde bien la structure ceci donne :

UPDATE liste_texte SET texte ="texte d'emple avec d'es quotes" WHERE id_texte ='25'

et non

UPDATE liste_texte SET texte ='texte d'emple avec d'es quotes' WHERE id_texte ='25'

voila pourquoi PHP exige la double notation '"

Prêt à vous aider quand je suis la et quand je le peux :-)

Répondre à cedrad33

7

Dalida, le 22 jun 2009 à 15:50:09

Gondoles, Venise, printemps, tamise…
le copier/coller de ton code, plus un echo() :

<?php
$chaine = "texte d'emple avec d'es quotes";
$sql2="UPDATE liste_texte
SET texte ='".$chaine."'
WHERE id_texte ='25' ";
echo $sql2;
?>

sortie :
UPDATE liste_texte
SET texte ='texte d'emple avec d'es quotes'
WHERE id_texte ='25' 
[ Mathieu ]
Il y a sûrement des pandas pour ne dépendre de rien

Répondre à Dalida

8

cedrad33, le 22 jun 2009 à 15:55:02

Provoque t'il une erreur ?? parce que moi non, ma base, prend correctement les données...
Prêt à vous aider quand je suis la et quand je le peux :-)

Répondre à cedrad33

9

Dalida, le 22 jun 2009 à 16:02:26

#1064 - 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 'emple avec d'es quotes' '' at line 1
[ Mathieu ]
Il y a sûrement des pandas pour ne dépendre de rien

Répondre à Dalida

10

cedrad33, le 22 jun 2009 à 16:12:54

Ca c'est une erreur mysql, je te demande si en PHP ca ne passe pas...
car mois ca fonctionne sans soucis...
Prêt à vous aider quand je suis la et quand je le peux :-)

Répondre à cedrad33

11

Dalida, le 22 jun 2009 à 16:35:46

Ca c'est une erreur mysql, je te demande si en PHP ca ne passe pas...
et t'as pas l'impression que le sujet de la discussion c'est SQL et pas PHP ?

Je voudrais faire une requête SQL sans faire de addslashes, comment faut-il écrire la requête ?

autrement dit, on s'en tape de la gestion des quotes en PHP…
[ Mathieu ]
Il y a sûrement des pandas pour ne dépendre de rien

Répondre à Dalida

12

 cedrad33, le 22 jun 2009 à 16:47:53

Oui mais excuse moi quand je vois des dollards devant des variables, je dirai pas que c'est du Mysql au sens propre

$chaine <== tu m'excusera mais c'est du PHP.
meme si on appel du SQL par derrière ensuite

Prêt à vous aider quand je suis la et quand je le peux :-)

Répondre à cedrad33