2013-08-16 43 views
0

這不起作用,我嘗試了很多東西。 htaccess文件指定魔術關閉。下面的代碼被縮寫爲快速。在MySQL和PHP中插入帶撇號的記錄

這裏是我的PHP:

$name=mysql_real_escape_string($_POST['textfield']['name']); 

這裏是我的SQL命令:

$sql="INSERT INTO tblmentors (name) VALUES ('$name') 
mysql_query($sql) or die (mysql_error()); 

如果有形式文本框撇號,斜線存儲和搞砸了一切。

+0

爲「徘徊無論你找到它,用\替換」一下,然後插入 – Satya

+0

哪個版本的PHP? – bansi

+2

如果您正在使用MySQLi或PDO綁定變量(這是2013年,而不是2003年);那麼這不會是一個問題 –

回答

3

在您的應用程序中使用「清理」用戶輸入有一些「魔法清理」功能。
完全沒用,它也損壞你的數據。

你必須找到並擺脫它。

雙重檢查魔術引號。在現代服務器.htaccess只是不起作用。

而且你一定要向準備語句而不是手動轉義。

+0

可能是神奇的引號。 – str

+1

如果[魔術引號](http://php.net/manual/en/security.magicquotes.php)打開,您的服務器不僅配置不正確,而且還運行超級舊版本的PHP。 – tadman

+0

他們在tadman - 我如何解決他們? – Goozer16

0

您可以嘗試disable magic quotes

如果失敗了,試試這個:

// I prefer to stripslashes() then mysql_real_escape_string(). 
// If you want, just skip it and do mysql_real_escape_string inside the else part. 

if (function_exists ('get_magic_quotes_gpc') && get_magic_quotes_gpc()) 
{ 
    $tmp = stripslashes ($_POST['textfield']['name']); 
} 
else 
{ 
    $tmp = $_POST['textfield']['name']; 
} 

$name = mysql_real_escape_string ($tmp); 
$sql = "INSERT INTO tblmentors (name) VALUES ('{$name}')"; 
mysql_query ($sql) or die (mysql_error());