2010-07-12 79 views
0

你好,並提前致謝。我是否需要在數據庫數據上使用mysql_real_escape_string來重新插入?

我正在從數據庫中檢索數據。當數據被添加到數據庫時,數據已經通過mysql_real_escape_string

一旦檢索到,我將它與一個原始變量進行比較,根據結果我可能會重新插入原始數據庫數據到數據庫到另一個不同的字段。

我的問題是,我必須使用mysql_real_escape_string對這個數據我從數據庫中獲得?

我認爲是的,因爲數據可能包含需要轉義的字符,我認爲反斜槓不存儲在數據庫中。

我的代碼是:

if(isset($row['location_uri']) && $row['location_uri'] != $location_uri) 
    { 
    $session_previous_page = $row['previous_page_uri']; 
    } 
else 
    { 
    $session_previous_page = $row['location_uri']; 
    } 

另外,我應該做任何與DB數據之前,我把它比作原始數據,從$_SERVER['REQUEST_URI']說?

感謝您給予的任何幫助。

回答

3

您應該重新應用它。轉義斜槓等功能,因此它是有效的SQL語法。這些斜槓實際上並不存儲在數據庫中。

+0

謝謝。我想盡可能多,但想要確定。 – k22k 2010-07-12 16:16:41

1

是的。你回答了你自己的問題 - 因爲特殊字符在讀取時被轉換,你需要在寫入時重新轉義它們。

我不確定您的確切問題$_SERVER['REQUEST_URI']。但是,如果你不應該相信這些變數。因此,如果您在數據庫查詢中進行比較,至少我建議將其轉義。

+0

謝謝。我的意思是,我將$ _Server ['REQUEST_URI']與存儲在數據庫中的$ _Server進行比較。因此,由於數據庫即將出現在數據庫中,即沒有反斜槓,因此我認爲可以將數據庫版本與$ _Server ['REQUEST_URI']版本進行比較。 – k22k 2010-07-12 16:21:04

+0

如果您將值注入到查詢中,我仍然建議將其轉義。你永遠不要相信任何東西 - 甚至是來自'$ _SERVER'的值。 – 2010-07-12 16:35:10

+0

哦,我當然會這麼做。但是我擔心,當我比較這兩個變量時,可能會有一個問題,即它們不匹配。我想在php級別比較2個變量,一個來自db,另一個來自$ _Server。 – k22k 2010-07-12 16:40:46

相關問題