重複の可能性:
mysql_real_escape_string と一重引用符
編集:確認しましたが、ホスティング サービスの mysql データベースは次のように設定されています。
Language: English (en-utf-8)
MySQL charset: UTF-8 Unicode (utf8)
以下の「userItem」変数は、ユーザーがフォームに入力したテキスト文字列に由来します。
「これは A のユーザー アイテムです」と入力し、それに mysql_real_escape_stringを使用すると、次 のようにデータベースに保存されます。
"this is A\'s user item"
悪い。backslsh がテスト文字列と共に保存されました。
mysql_real_escape_string($userItem)をコメントアウトし、クエリ文字列で$userItemを 使用すると、データベースに格納されます。
"this is A's user item"
良い!!バックスラッシュなし。
しかし、正直に言うと、安全上の理由からmysql_real_escape_stringを使用したいのです 。文字列をデータベースに保存する前に mysql_real_escape_string を使用する方が安全であると信じるようになりました。
問題: テキスト文字列"this is A\'s user item"を取得 してブラウザに表示すると、文字列にスラッシュが含まれています。そして、それはユーザーを驚かせます -- 彼らは「これは A のユーザー アイテムです」と入力したのではなく、 「これは A のユーザー アイテムです」と入力しました。
コードは次のとおりです。
$newItemInsertQuery = "INSERT INTO " . Dbases::$USERITEMS_TABLE
. " VALUES "
. "('"
. mysql_real_escape_string( $loggedInUser ) . "', '"
//. mysql_real_escape_string($userItem) . "', '" COMMENTED OUT due to extraneous backslash
. $userItem . "', '"
. mysql_real_escape_string($description) . "', '"
. mysql_real_escape_string($itemImage) . "', '"
. mysql_real_escape_string($userSubfolder) . "')";
$result = mysql_query($newItemInsertQuery);
私は次のことを疑っています。
データベース挿入の前に文字列に mysql_real_escape_string を使用するのは良いことであるという私の期待は有効です。
しかし、私は取らなければならない他のステップに気づいていません