Dovresti eseguire l'escape di ciascuna di queste stringhe (in entrambi i frammenti) con mysql_real_escape_string()
.
http://us3.php.net/mysql-real-escape-string
Il motivo per cui le tue due query si stanno comportando in modo diverso è probabilmente perché hai magic_quotes_gpc
acceso (che dovresti sapere è una cattiva idea). Ciò significa che le stringhe raccolte da $_GET, $_POST e $_COOKIES sono state salvate per te (ad esempio, "O'Brien" -> "O\'Brien"
).
Una volta archiviati i dati e successivamente recuperati di nuovo, la stringa che si recupera dal database non essere automaticamente evaso per te. Ritroverai "O'Brien"
. Quindi, dovrai passarlo attraverso mysql_real_escape_string()
.