首頁  >  文章  >  後端開發  >  php插入含有特殊符號資料的處理方法

php插入含有特殊符號資料的處理方法

墨辰丷
墨辰丷原創
2018-05-30 15:28:021827瀏覽

當我們需要利用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實作時間加減函數strtotime用法

php實作簡單的網頁版計算器功能的方法

#PHP基於遞迴函數求一個數階乘的方法

############################## ###################

以上是php插入含有特殊符號資料的處理方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn