Powinieneś uciec przed każdym z tych ciągów (w obu fragmentach) za pomocą mysql_real_escape_string()
.
http://us3.php.net/mysql-real-escape-string
Powodem, dla którego Twoje dwa zapytania zachowują się inaczej, jest prawdopodobnie to, że masz magic_quotes_gpc
włączony (co powinieneś wiedzieć, to zły pomysł). Oznacza to, że ciągi zebrane z $_GET, $_POST i $_COOKIES są dla ciebie eskejpowane (np. "O'Brien" -> "O\'Brien"
).
Po przechowaniu danych, a następnie ponownym ich odzyskaniu, ciąg, który otrzymasz z bazy danych, nie być automatycznie uciekł dla Ciebie. Odzyskasz "O'Brien"
. Musisz więc przekazać go przez mysql_real_escape_string()
.