Трябва да избягвате всеки от тези низове (в двата фрагмента) с mysql_real_escape_string()
.
http://us3.php.net/mysql-real-escape-string
Причината, поради която двете ви заявки се държат различно е вероятно, защото имате magic_quotes_gpc
включен (което трябва да знаете, че е лоша идея). Това означава, че низовете, събрани от $_GET, $_POST и $_COOKIES, се екранират вместо вас (т.е. "O'Brien" -> "O\'Brien"
).
След като съхраните данните и впоследствие ги извлечете отново, низът, който ще получите обратно от базата данни, няма ще бъде автоматично избяган вместо вас. Ще получите обратно "O'Brien"
. Така че ще трябва да го предадете през mysql_real_escape_string()
.