2014-04-16 115 views
0

我使用addslashes()來插入數據。但服務器也自己添加addslashes()服務器添加addslashes()本身。我怎樣才能阻止呢?

例如:

$str="jogindersinh's company"; 
$q="insert into company(company_nm)values(addslashes($str))"; 

字符串必須在數據庫像jogindersinh's company插入。

但數據插入到數據庫中,如jogindersinh\'s company,因爲第二次添加addslashes()

所以當我提取數據。獲取結果jogindersinh\'s company

那麼如何停止服務器添加addslashes()

+1

您是否啓用了魔術引號?什麼'var_dump(get_magic_quotes_gpc());'輸出? –

+0

'addslashes'不應該在你的代碼中。 **請勿使用它**。你需要做[適當的SQL轉義](http://bobby-tables.com/php)。作爲一個說明,通常會導致這個問題的「Magic Quotes」被認爲是一個糟糕的主意,它在PHP 5.4中被刪除。 – tadman

+0

或者更好的是,使用預先準備好的查詢並將變量作爲參數傳遞,那麼您根本不必擔心會進行轉義。 –

回答

2

聽起來像Magic Quotes已啓用。你應該關掉它。

除此之外,addslashes()是不會保護你免受SQL注入。您應該使用準備好的語句(或者如果必須,請使用專門的轉義函數,如mysql_real_escape_string())。

0

查看你的php設置文件並禁用Magic Quotes。同時保護您的查詢不受sql注入的影響。嘗試使用Ctype_驗證輸入並使用Mysql_real_escape_string()。

相關問題