特殊字符打破mysql插入

时间:2012-04-13 01:07:41

标签: php mysql html-sanitizing input-sanitization

我有一个像这样的mysql语句:

mysql_query("INSERT INTO movies (comments, description, synopsis)
VALUES ('$_POST["comments"]', '$_POST["desc"]',$_POST["synopsis"])");
如你所见,非常简单明了。问题是当我在表单中输入特殊字符时,它不会将数据插入到我的表中(使用phpmyadmin直接检查它是否已插入)。 例如,如果我把评论textarea放入这个值:“这是一个评论” 这很有效 如果我反而说:“你的名字是什么?:John doe是我的名字” 它破了。我知道它因为mysql使用了字符......对我应该做什么的任何建议?

3 个答案:

答案 0 :(得分: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 :(得分: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'");

答案 2 :(得分:-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'");

有关更多信息google“php addslashes”,或者查看此页面看起来是解释http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php