Você deve escapar de cada uma dessas strings (em ambos os snippets) com
mysql_real_escape_string()
. http://us3.php.net/mysql-real-escape-string
O motivo pelo qual suas duas consultas estão se comportando de maneira diferente provavelmente é porque você tem
magic_quotes_gpc
ligado (o que você deve saber que é uma má ideia). Isso significa que as strings coletadas de $_GET, $_POST e $_COOKIES são escapadas para você (ou seja, "O'Brien" -> "O\'Brien"
). Depois de armazenar os dados e, em seguida, recuperá-los novamente, a string que você recebe de volta do banco de dados não ser automaticamente escapado para você. Você receberá de volta
"O'Brien"
. Então, você precisará passá-lo através de mysql_real_escape_string()
.