Probleme requetes (" et phpmyadmin 2.6.0-rc2

Répondre
neo_corps
le 04/04/2006 à 16:15
neo_corps
Bonjour à tous,

Comme dit dans le titre, je travaille avec une version 2.6.0-rc2 de phpmyadmin chez un hébergeur. La version php est la 5.
Avant d'etre chez cet hébergeur j'etais chez 1and1 avec phpmyadmin version 2.6.4-pl3

Voilà donc mon probleme :

lors d'une exécution tout bete d'une requete upadte :
$sql = 'UPDATE generalites SET contenu_generalites='.$contenu.' WHERE id_generalites="'.$id.'"';


je suis obliger de rajouter des "" pour encadre ma variable $contenu sinon j'ai des retour d'erreur sql. La requete ci-dessus est celle chez 1and1 et voilà celle que je suis obligé de mettre chez mon hébergeur local :

$sql = 'UPDATE generalites SET contenu_generalites="'.$contenu.'" WHERE id_generalites="'.$id.'"';


Le probleme est que si dans ma variable on retrouve un caractère " et bien ca fout le souk et elle ne passe plus. J'aurai bien aimer pouvoir rajouter simplement des ' au lieu des " mais apres j'ai des erreurs php.

Quelqu'un pourrait-il me sortir de là (et éviter de me dire que mon hébergeur doit changer de version de phpmyadmin).

Merci bien ;)
zebden
le 04/04/2006 à 17:15
zebden
Lu,

tout ca n'a rien à voir avec phpmyadmin, une chaine proprement dite doit être délimitée pour l'assimiler comme telle. Si dans ta chaine, tu as un guillemet, logiquement ca entraine la fin de la chaine.

Donc pour parer ce probleme :

contenu_generalites="'. mysql_real_escape_string($contenu) . '"

Cette fonction a pour but d'echapper les caractères spéciaux et de preparer l'insertion dans une base Mysql. En revanche une chaine de type INT, n'a pas besoin d'être délimitée, entrainant même chez certaines bdd, une erreur.
zebdinou pour les intimes / Blog : http://www.zebden.fr
neo_corps
le 04/04/2006 à 17:26
neo_corps
Merci je vais tester ca, on m'a soumis d'autre solution mais c'était les ' qui bloquait et plus les ".

J'ai assimilé ce probleme a la version car avec la version de 1and1 il n'y avait aucun probleme. C'est venu depuis le changement d'hébergeur.
neo_corps
le 04/04/2006 à 17:43
neo_corps
Voila differentes manières avec lesquelles mon problème s'est résolu.

$sql = "UPDATE historique SET contenu='".addslashes($contenu)."' WHERE id_historique='".$id."'";


et

$contenu = mysql_real_escape_string($contenu); 

$sql = "UPDATE historique SET contenu='".$contenu."' WHERE id_historique='".$id."'";


Merci bien !!!!
zebden
le 04/04/2006 à 18:03
zebden
Je vais t'expliquer pourquoi ca marchait avant, 1and1 a les magic_quotes d'activé, c'est à dire que ca remplace(ca echappe automatiquement) :

$sql = "UPDATE historique SET contenu='".addslashes($contenu)."' WHERE id_historique='".$id."'";

ce qui ne protège pas forcement. Mieux vaut utiliser mysql_real_escape_string.
zebdinou pour les intimes / Blog : http://www.zebden.fr
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours