2010-04-06 105 views
13

誰能告訴我如何在MySQL數據庫中插入特殊字符?我已經創建了一個PHP腳本,旨在將一些單詞插入到數據庫中,但如果該單詞包含'則它不會被插入。如何在數據庫中插入特殊字符?

使用PHPmyAdmin時,我可以插入特殊字符,但只是在通過PHP插入時不起作用。難道是PHP正在將特殊字符變成別的東西嗎?如果是這樣,有沒有辦法讓它們正確插入?

+0

可你剛剛粘貼代碼的部分,其中paarticular變量進行處理並插入? – 2010-04-06 10:22:46

回答

24
$insert_data = mysql_real_escape_string($input_data); 

假如你已經被存儲爲$input_data

+0

這會教我不寫簡單的一行例子。 – zaf 2010-04-06 10:57:25

+0

我知道!當我看到你擊敗了我時,我幾乎刪除了我的答案。 – Anthony 2010-04-06 11:12:47

+0

完美...剛剛救了我的一天。謝謝! – 2011-03-26 20:53:34

9

你逃跑了嗎?嘗試mysql_real_escape_string()函數,它將處理特殊字符。

+0

+1打我。當我使用反引號來格式化我的內聯代碼時,我發現我得到了更多的選票,如果有幫助的話。 – Anthony 2010-04-06 11:23:06

+1

既然你先回答了,但沒有舉例,我們同情upvote。彷彿這是一個使用PHP.net – dscher 2010-04-06 12:35:10

+0

@dscher無法更快回答的問題謝謝!如果只有更多像你這樣的人! ;) – zaf 2010-04-06 12:52:42

2

數據可能是 「mysql_real_escape_string()」 將努力爲ü

4

你最有可能逃跑的SQL字符串,類似於:

SELECT * FROM `table` WHERE `column` = 'Here's a syntax error!' 

您需要轉義報價,如下所示:

SELECT * FROM `table` WHERE `column` = 'Here\'s a syntax error!' 

mysql_real_escape_string()爲您處理。

6

使用mysql_real_escape_string

那麼,是什麼mysql_real_escape_string嗎?

此PHP庫函數將反斜槓預置爲以下字符:\ n,\ r,\,\ x00,\ x1a,'和「。重要的部分是單引號和雙引號是逃脫的,因爲這些是最有可能打開漏洞的角色。

請告訴您關於sql_injection的信息。你可以用這個link作爲開始

+1

又一個愚蠢的文章,作者沒有線索。同樣的關於drop table的老故事(好嚇壞新手,是的,但從來沒有工作過),同樣的愚蠢查詢功能,照顧魔術引號。像往常一樣,沒有關於非字符串值的字眼。以及$ badWords有史以來最偉大的動作 – 2010-04-06 10:35:16

+0

好吧,它不是最好的文章,但它應該熟悉基礎知識(我從快速谷歌搜索中挖掘出來的)如果有的話,你可以給出一個更好的文章的鏈接。 – 2010-04-06 10:46:34

+0

嗯,我寫了一些,它的形式回答。 http://stackoverflow.com/questions/2589820/is-it-necessary-to-use-mysql-real-escape-string-when-magic-quotes-gpc-is-on – 2010-04-07 05:12:32

3

注意,正如其他人指出,mysql_real_escape_string()會解決這個問題(如將和addslashes),但是你應該總是使用mysql_real_escape_string()出於安全考慮 - 考慮:

SELECT * FROM valid_users WHERE username='$user' AND password='$password' 

如果什麼瀏覽器發送

user="admin' OR (user=''" 
password="') AND ''='" 

查詢變爲:

SELECT * FROM valid_users 
WHERE username='admin' OR (user='' AND password='') AND ''='' 

即安全檢查完全被繞過。

C.

0
$var = mysql_real_escape_string("data & the base"); 
$result = mysql_query('SELECT * FROM php_bugs WHERE php_bugs_category like "%' .$var.'%"'); 
+0

這是一個工作示例來處理在mysql.you中的特殊字符可以替換&'它會工作正常 – 2012-11-16 10:32:46

+0

你可以編輯你的答案並添加澄清評論:-) – kleopatra 2012-11-16 10:36:52

0

使用此:htmlentities($_POST['field']);

只夠。這對特殊字符:

使用CI htmlentities($this->input->post('control_name'));

相關問題