當我們需要利用php插入含有特殊符號資料的時候,會發現資料無法正常插入,那麼這個時候該如何解決呢?最近在工作就遇到了這個問題,於是透過查找資料也得以解決了,現在將處理的方法分享給大家,有需要的朋友們可以參考借鑒,下面來一起學習學習吧。
發現問題
當我們在向mysql寫入資料時,如果資料中有特殊字元就會出現資料無法正常入庫的情況,例如:
mysql_query(”update table set `name`='make's'”);
而這個時候一般就是使用addslashes()
這個函數來轉義資料中的特殊字元
處理方法
PHP為了安全性,所以引入了個magic_quotes_gpc = On
的功能,可以不需要做任何處理就能直接把單引號插入資料庫中,那麼對於Off時,則需要考慮單引號的問題了,而不是一味地信任運行環境。
當magic_quotes_gpc = On
時,使用了addslashes()
處理後的資料在資料庫中將以\'形式保存,如果此時直接輸出的話,就會發現比自己期待的內容多了個\,因此stripslashes()
出場了,它能把\去掉(區別於str_replace(”\”, “”,$ Str)
)。
當magic_quotes_gpc = Off
時,使用了addslashes()
處理後的資料在資料庫中將以'形式保存,沒有上面說的有\的問題,addslashes()
起到插入資料不出錯的作用,如果此時直接輸出的話,資料正常。不需要再用stripslashes()
。
addslashes()
和stripslashes()
剛好是相反的,直接記憶:addslashes()
加個\,stripslashes()
去個\
那麼什麼時候用呢?
簡單說:
當magic_quotes_gpc = On
時,系統會自動處理單引號等問題,用不用 addslashes()
和stripslashes()
都沒關係,但是如果新增資料時用了addslashes()
, 那麼顯示資料時必須stripslashes()
當magic_quotes_gpc = Off
時,系統不會處理單引號等問題,所以插入資料時必須使用addslashes()
,顯示數據時則不需要使用stripslashes()
。
既然有了分析,做程式時該怎麼辦呢?根據以上兩種情況,可得:
不管magic_quotes_gpc
是On還是Off,咱加入資料時都用addslashes()
,當On時,必須使用stripslashes()
,Off時則不能用stripslashes()
。
以上就是本文的全部內容,希望對大家的學習有所幫助。
相關推薦:
############################## ###################
以上是php插入含有特殊符號資料的處理方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!