BTW, in my page the slashed \ appear but I see in phpMyAdmin in tables, the slashes don't show. Is that normal?
Yes and No.
When you call mysql_real_escape_string() it puts backslashes in the string to prevent the field from terminating early. For example, to set a user's name to "O'Roark"; without the escape the command sent to the database would like something like this:
UPDATE Users SET LastName = 'O'Roark' WHERE ID = 4; and the apostrophe in "O'Roark" ends the quote for the string. The rest of it "Roark'" causes the server to throw an error because it does not know what to do with it. When you escape it, the command looks something like this:
UPDATE Users SET LastName = 'O\'Roark' WHERE ID = 4;; which tells the server that the apostrophe is a literal character in the value. The server removes the backslash and inserts the data as you expect. So if you display an escaped string, you will see the backslashes.
If you are going to send the variable to the browser for display or editing after using mysql_real_escape_string(), then you should call stripslashes() on it.
echo stripslashes($name);. If you don't, and the user posts the data again, the call to mysql_real_escape_string() will escape the backslash causing it to be inserted into the database.