addslashes protègles chaînes PHP de manière indifférentes : ’ est protégé par ', " par ", etc. En gros :
addslashes( “foo’’”) produit foo’’ et addslashes( ‘foo""’); produit foo"" ce qui n’est déjà plus du tout la même chose puisque mySQL peut très bien faire comme PHP fait quand tu utilises des single quotes :
Entre ’ et ’ seuls ’ et \ sont remplacés par ’ et , sinon c’est \.
Pire encore… en SQL, ’ n’est pas standard, c’est ça qui est standard :
‘C’‘est la vie’
Pas ‘C’est la vie’.
Avec mysql_real_escape_string tu t’assures que :
c’est une fonction optimisée pour les requêtes mySQL
cela supporte les locales (ie: serveur en UTF, et toi en ISO, ou connerie du genre)
si jamais mySQL se met à plus reconnaître ’ pour protéger les chaînes, hé bien ta requête sera portable et surtout réutilisable pour peu que la lib mySql soit à jour