2011-07-10 10 views
0

MySQL real_escape_string()を使用して実際にそれらの文字を削除しないだけの不正な文字を削除する挿入機能があります。MySQLリアルエスケープ文字列

$interest = mysql_real_escape_string(urldecode($_GET['interest'])); 

    $query = "INSERT INTO user_interests (user_id, interest) VALUES('{$user_id}' , '{$interest}')"; 
    mysql_query($query) or die(mysql_error()); 
    echo $interest; 
+2

mysql_real_escape_stringは文字を削除しないため、DBに送信されたときにクエリの引用符をエスケープします。この関数を使用する前に必ず接続してください。そうでないとFALSEが返されます –

+0

ahh thankyou ... – Liam

+0

何をしましたか?どのキャラクターを削除しようとしていましたか? –

答えて

2

「不正な文字」はありません。 mysql_real_escape_stringはすべての文字をエンコードするだけで、安全にクエリーに入れることができます。あなたは、文字cを削除したい場合は、str_replaceを使用します。

$input = urldecode($_GET['interest']); 
$input = str_replace('c', '', $input); 
$interest = mysql_real_escape_string($input); 
2

mysql_real_escape_stringのは、ちょうどあなたがあなたのデータベースに書き込むしようとすると問題が発生する可能性がありますあなたの文字列の文字をエスケープします。これは、それがそれらを削除することを意味しません。

ユーザー入力を受け取り、ユーザーが入力フィールドに見積もりを入力したとします。その文字列をデータベースに挿入しようとすると、見積もりはSQLクエリの見積もりとして解釈され、クエリは正しく機能しません。

INSERT INTO table (string) 
VALUES ("this is a string with an extra " in it") 

あなたが最初にこの文字列にmysql_real_escape_stringの使用する場合は、あなたのSQLクエリは、基本的に次のようになります。

INSERT INTO table (string) 
VALUES ("this is a string with an extra \" in it") 

は、上記のエスケープバックスラッシュを参照してください。この余分な見積もりは、ここで書式設定を駄目にすることさえあります。

関連する問題