Bạn nên thoát từng chuỗi này (trong cả hai đoạn mã) bằng mysql_real_escape_string()
.
http://us3.php.net/mysql-real-escape-string
Lý do hai truy vấn của bạn hoạt động khác nhau có thể là do bạn có magic_quotes_gpc
được bật (mà bạn nên biết là một ý tưởng tồi). Điều này có nghĩa là các chuỗi được thu thập từ $ _GET, $ _POST và $ _COOKIES được thoát cho bạn (tức là "O'Brien" -> "O\'Brien"
).
Khi bạn lưu trữ dữ liệu và sau đó truy xuất lại, chuỗi bạn lấy lại từ cơ sở dữ liệu sẽ không được tự động thoát cho bạn. Bạn sẽ nhận lại "O'Brien"
. Vì vậy, bạn sẽ cần chuyển nó qua mysql_real_escape_string()
.