2012-04-13 158 views
0

我有一個MySQL聲明是這樣的:特殊字符打破MySQL的插入

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

非常簡單明瞭的,你可以看到。問題是當我向表單輸入特殊字符時,它不會將數據插入到我的表中(使用phpmyadmin直接檢查它是否被插入)。 例如,如果我把評論textarea這個值:「這是一條評論」 這個作品 如果我把,而不是:「你叫什麼名字?:約翰doe是我的名字」 它breaks.I知道它是因爲mysql使用人物......我應該做什麼的建議?

+5

請從這裏開始:[大逃避現實(或:你需要知道的處理文本中的文本)](http://kunststube.net/escapism/) – deceze 2012-04-13 01:11:30

回答

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」,或者看看這個頁面看上去解釋http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php

+0

爲什麼'addslashes'而不是相關的mysql函數? – deceze 2012-04-13 01:20:47

+0

更改爲「mysql_real_escape_string」。我把「google for php addslashes」只是爲了引導更多的信息,因爲這個原因。 – 2012-04-13 01:22:19

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'");