2010-01-27 100 views
7

我想知道什麼是SQL Server轉義字符串在PHP中等效?mysql_real_escape_string替代SQL服務器

+3

如果您使用類似PDO的包裝,您不必擔心,因爲您可以使用參數化查詢。如果可以的話,使用包裝。 – 2010-01-27 11:52:14

+0

對不起,沒有使用PDO的準則。 – 2010-01-27 11:53:09

回答

7

不錯的問題,我不知道,但你可以使用PDO::quote()PDO_DBLIB驅動程序。


編輯:好像this guygot it from StackOverflow

function mssql_escape($data) { 
    if(is_numeric($data)) 
     return $data; 
    $unpacked = unpack('H*hex', $data); 
    return '0x' . $unpacked['hex']; 
} 

另一種選擇:

function mssql_escape($str) 
{ 
    if(get_magic_quotes_gpc()) 
    { 
     $str= stripslashes($str); 
    } 
    return str_replace("'", "''", $str); 
} 
+0

它是否適用於PHP7?因爲他們刪除它。 – YumYumYum 2017-08-04 13:32:00

3

的最佳選擇是使用參數化查詢,那你就不要必須逃避字符串。

如果您仍然希望自己將查詢放在一起,則爲SQL Server(T-SQL)轉義字符串文字的正確方法是用兩個撇號替換字符串中的每個撇號(')。

+0

這是否也處理字符串中的空字符,反斜槓等? – 2012-06-06 15:03:59

+0

@ebyrob:是的。順便說一下,字符串中的反斜槓根本不需要任何特殊的處理。 – Guffa 2012-06-06 17:02:03

+0

這是否適用於所有字符集? – 2016-04-21 03:29:08

0

簡短的回答是:使用連接庫提供的任何機制,它確實與數據庫無關。如果你使用的是ADO,那麼你有參數化查詢,如果你使用別的東西(我對PHP一無所知),那麼使用它提供的任何東西。

滾動你自己可能是一個壞主意,因爲你很可能會出錯,例如,正確處理評論分隔符。