Vous devriez échapper chacune de ces chaînes (dans les deux extraits) avec mysql_real_escape_string()
.
http://us3.php.net/mysql-real-escape-string
La raison pour laquelle vos deux requêtes se comportent différemment est probablement due au fait que vous avez magic_quotes_gpc
activé (ce qui, vous devez le savoir, est une mauvaise idée). Cela signifie que les chaînes recueillies à partir de $_GET, $_POST et $_COOKIES sont échappées pour vous (par exemple, "O'Brien" -> "O\'Brien"
).
Une fois que vous avez stocké les données, puis que vous les avez récupérées à nouveau, la chaîne que vous récupérez de la base de données ne sera pas être automatiquement échappé pour vous. Vous récupérerez "O'Brien"
. Donc, vous devrez le passer par mysql_real_escape_string()
.