在MySQL中,QUOTE()
和mysql_real_escape_string()
之間有什麼區別?從MySQL文檔,我瞭解以下內容:MySQL QUOTE()vs mysql_real_escape_string()?
QUOTE()
- 寫進SQL查詢
- 轉義反斜槓,單引號,NUL,CTRL + Z
- 返回一個單帶引號的字符串
- 行爲依賴於MySQL服務器的字符集
mysql_real_escape_string()
- 寫在C/C++查詢之前被執行,從而允許轉義字符串被讀/提交前改性
- 非常不方便相比
QUOTE()
- 逃逸反斜槓時使用,單引號,NUL,CTRL + Z和雙引號,\ n和\ r
- 顯然增加了更多的報價,使人物在日誌文件中輕鬆可讀
- 行爲依賴於MySQL服務器的字符集
忽略日誌,它是有用的逃生\n
和\r
字符?有了這兩個函數,客戶/服務器功能效率有什麼不同? mysql_real_escape_string()
如果希望開發人員在輸入查詢之前處理轉義字符串,這聽起來很有用。但是,QUOTE()
不提供最安全可靠的字符串轉義方法嗎?
我不知道是否應該使用QUOTE()
來處理所有語言的所有查詢,並忘記使用語言特定函數轉義字符串。
所以'QUOTE()'不是注射安全的?什麼時候'QUOTE()'適合使用?我擔心功能,而不是方便。你也是正確的,因爲C++有宏。 – collinjsimpson 2012-07-25 03:38:20
我不知道爲什麼'QUOTE()'會有用,恐怕... – 2012-07-25 03:40:31