Tom's Guide > Forum > Programmation > [Résolu]Mysql, probleme avec les caracteres speciaux

[Résolu]Mysql, probleme avec les caracteres speciaux

Forum Programmation : [Résolu]Mysql, probleme avec les caracteres speciaux

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour amis programmeurs
je me suis heurté à un nouveau problème, avec mysql/php
j'insère une variable php dans une base de donnée mysql de cette façon:

Code :
  1. $sql = "INSERT INTO News(titre) VALUES ('$titre')";



le problème est que si $titre possède un caractère spécial comme ', j'obtiens une erreur de syntaxe de ce genre

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 '


une idée ?


Message édité par Anonyme le 13-04-2007 à 14:30:51
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

C'est tout a fait normal !

Imagine

Code :
  1. $sql = "INSERT INTO News(titre) VALUES ('balabla'ablabla')";


Ca plante car mySQL va pas comprendre ce que fait ablabla' ici...

Alors le mieux c'est d'utiliser addslashes() de php

Code :
  1. $sql = "INSERT INTO News(titre) VALUES ('".addslashes($titre)."')";



Apres attention à l'injection de code...http://www.commentcamarche.net/attaques/injection-commandes-sql.php3
Regarde aussi du coté de http://fr.php.net/htmlentities ...

------------------------------ Programmeur n.m : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.
Répondre à MoOx_t

complément:
il est préférable d'utiliser mysql_real_escape_string ()
http://php.benscom.com/manual/fr/f [...] string.php
qui met un \ avant ' et autres et en plus protège contre les injections de code en traitant la chaine selon l'encodage de la base

Répondre à coca25

Nickel je connaissais pas !

------------------------------ Programmeur n.m : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.
Répondre à MoOx_t

Merci de vos réponses :)
c'est exactement ce que je voulais

Répondre à Anonyme

Pour enlever les caractères qui bloquent ton insertion fais : addslashes($titre); il va dupliquer le caractère en question . au moment de la lecture tu feras stripslashes($titre)

Répondre à mofallyes

Si je puis me permettre, en général, la concaténation évite aussi ce genre de problèmes :

mysql_query("insert into table values('".$var."')" );

Mais addslashes est une bonne solution.

Après, par mesures de précaution je te conseille de faire ceci :
$var = htmlentities(mysql_escape_string($var)); par exemple.

Répondre à polweb

Merci mon problème était résolu mais j'en prends note pour la prochaine fois

Répondre à Anonyme

@mofallyes:
- quand il y a résolu dans le titre, c'est que c'est le cas
- addslashes() ne protège pas contre les injections sql
- et surtout ca a été dit 4 posts avant

------------------------------ Ne pas oublier le [resolu] pour finir le sujet.
Penser à voir les tutos, ca peut aider!
Répondre à coca25
Tom's Guide > Forum > Programmation > [Résolu]Mysql, probleme avec les caracteres speciaux
Aller à :

Il y a 312 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens