亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

php增刪改查mysql實例 php操作數(shù)據(jù)庫的步驟


php增刪改查mysql實例 php操作數(shù)據(jù)庫的步驟

文章插圖
當(dāng)使用php向數(shù)據(jù)庫中寫入或者讀取數(shù)據(jù)時,若在進(jìn)行操作前對字符串進(jìn)行一些處理,如:過濾處理,可能會導(dǎo)致某些數(shù)據(jù)庫語句因為特殊的字符引起的污染而出現(xiàn)致命的錯誤 。為此,php中提供了一個“魔法開關(guān)”—–magic_quotes_gpc 。(該開關(guān)已在5.4.0版本被刪除,始終置為off)
當(dāng)magic_quotes_gpc = on時,從外部post、get、cooki過來的數(shù)據(jù)都會在預(yù)定義字符之前添加”\“ 。
比如:
程序中var_dump($_GET[‘id’]);
輸出的結(jié)果為:
string(3) “1\’”
預(yù)定義的字符為:
單引號(‘) 雙引號(”) 反斜杠(\) NULL
當(dāng)magic_quotes_gpc=off時,寫入數(shù)據(jù)庫的字符串未經(jīng)過任何過濾處理,從數(shù)據(jù)庫中讀出的字符串也未作任何處理 。如何這樣設(shè)置這個開關(guān),并且沒有其他對字符串進(jìn)行處理的操作,那么可能會給數(shù)據(jù)庫的讀寫帶來問題,例如:
將數(shù)據(jù):$data = https://www.520longzhigu.com/diannao/“insert_data’”to_mysal”;(data和to之間是一個單引號,一個雙引號)
若將字符串$data寫入數(shù)據(jù)庫中,則會出現(xiàn)sql語句錯誤,寫入數(shù)據(jù)失敗 。
那么如果不使用這個“開關(guān)”就沒有辦法解決這個問題了嗎?答案是否定的 。
我們可以使用以下方法:
使用addslashes() 函數(shù)
函數(shù)原型:
string addslashes ( string $str )
參數(shù):要轉(zhuǎn)義的字符串
返回值:返回轉(zhuǎn)義后的字符串
作用:將要轉(zhuǎn)義的字符串中的預(yù)定義字符轉(zhuǎn)義,即在預(yù)定義字符前面加上反斜杠 。
php中還有一個函數(shù)能轉(zhuǎn)義sql語句中使用的字符串中特殊的字符,該函數(shù)的原型如下:
string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier = NULL ] )
本函數(shù)將 unescaped_string 中的特殊字符轉(zhuǎn)義,并計及連接的當(dāng)前字符集,因此可以安全用于 mysql_query() 。
現(xiàn)在向數(shù)據(jù)庫中插入數(shù)據(jù)的可能會引起sql語句被污染的問題已經(jīng)解決了,可是如果現(xiàn)在想要把剛才添加到數(shù)據(jù)庫中的元素讀取出來的話,會發(fā)現(xiàn)讀出的數(shù)據(jù)中每個預(yù)定義的字符前面都多了一個反斜杠,這時反斜杠并不是我們想要的,那么有沒有辦法將每個預(yù)定義字符前面的反斜杠去掉呢?
php中也提供了具有該功能的函數(shù):
函數(shù)原型為:
string stripslashes ( string $str );
函數(shù)返回值:返回一個去掉轉(zhuǎn)義反斜杠的字符串,即去掉addslashes()函數(shù)添加的字符串 。
另外tp中自定義了一個函數(shù):
function stripslashes_deep($value)
{
$value = https://www.520longzhigu.com/diannao/is_array($value) ? array_map(‘stripslashes_deep’, $value) : stripslashes($value);
return $value;
}
這個函數(shù)也能去除預(yù)定義字符前的反斜杠 。
現(xiàn)在還有一個問題:在訪問服務(wù)器之前,我們并不知道“魔法開關(guān)”的狀態(tài)是打開還是關(guān)閉,如果已經(jīng)處于打開狀態(tài),再使用addslashes()函數(shù)進(jìn)行轉(zhuǎn)義,就會使預(yù)定義前面有兩個反斜杠,從而使的寫入數(shù)據(jù)庫的數(shù)據(jù)發(fā)生改變 。
解決辦法:
可以使用函數(shù)get_magic_quotes_gpc()進(jìn)行檢驗“魔法開關(guān)”是否打開 。
$data = https://www.520longzhigu.com/diannao/get_magic_quotes_gpc() ? $data : addslashes($data);


    以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!

    「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: