2012-04-13 18 views
0

は、私はこのようなMySQLの文が挿入破る:特殊文字は、MySQLが

mysql_query("INSERT INTO movies (comments, description, synopsis) 
VALUES ('$_POST["comments"]', '$_POST["desc"]',$_POST["synopsis"])"); 

あなたが見ることができるように非常にシンプルで分かりやすいです。問題は、フォームに特殊文字を入力するときです。データがテーブルに挿入されません(挿入されているかどうかを直接確認するためにphpmyadminを使用します)。 たとえば、私はコメントのテキストエリアにこの値を入れた場合: "これはコメントです" 代わりに「あなたの名前は何ですか?:John doeは私の名前です」 それは分かります。mysqlは文字...私は何をすべきかについて何か提案していますか? (または、[グレート現実逃避を::

+5

ここから始めてください説明に見えるあなたが知っておくべきことテキスト内でのテキストの操作)](http://kunststube.net/escapism/) – deceze

答えて

7
mysql_query("INSERT INTO movies (comments, description, synopsis) 
VALUES ('".mysql_real_escape_string($_POST["comments"])."', '".mysql_real_escape_string($_POST["desc"])."','".mysql_real_escape_string($_POST["synopsis"])."'"); 
-1
$comments = mysql_real_escape_string($_POST['comments']); 
$desc = mysql_real_escape_string($_POST['desc']); 
$synopsis = mysql_real_escape_string($_POST['synopsis']); 

mysql_query("INSERT INTO movies (comments, description, synopsis) 
VALUES ('$comments', '$desc', '$synopsis'"); 

詳細については、 "PHPのにaddslashesを" Googleのか、このページを見てはhttp://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php

+0

関連するmysql関数ではなく 'addslashes'がなぜですか? – deceze

+0

"mysql_real_escape_string"に変更されました。私はこの理由のためのより多くの情報を案内するために "google for php addslashes"を置くだけです。 –

0
$comments = mysql_real_escape_string($_POST['comments']); 
$desc = mysql_real_escape_string($_POST['desc']); 
$synopsis = mysql_real_escape_string($_POST['synopsis']); 

mysql_query("INSERT INTO movies (comments, description, synopsis) 
VALUES ('$comments', '$desc', '$synopsis'");