SQLを使用するためにデータをエスケープするポイントを誤解しています。データを永続的に変更するわけではありません。贈り物の周りに紙を巻くものと考えてください。あなたはデータベースにいくつかのデータをプレゼントしているので、それをうまくまとめます(real_escape_string)。データベースに到達すると、DBサーバーはギフトのラップを解除し(エスケープを削除)、「ギフト」を隠し場所に置きます。
追加したバックスラッシュは、実際の挿入を行うときにDBサーバーによって削除されるため、保存されたデータに表示されることはありません。エスケープは、クエリに挿入したデータがSQLステートメントを「壊さない」ようにするためだけにあります。
$name = "Miles O'Brien"; // <---note the '
$sql = "INSERT INTO people (names) VALUES ('$name')";
結果のSQL:
INSERT INTO people (names) VALUES ('Miles O'Brien')
^--- oops, string terminated earlier, what's this "Brien" field/keyword?
real_escape_stringを使用すると、クエリは次のようになります。
... VALUES ('Miles O\'Brien')
^^---no longer an SQL string delimiter, treat it like any other char now.