mysql_real_escape_string替代SQL Server

时间:2010-01-27 11:47:24

标签: php sql-server tsql

我想知道PHP中SQL Server转义字符串的等价物是什么?

3 个答案:

答案 0 :(得分:7)

很好的问题,我不知道,但您可以将PDO::quote()PDO_DBLIB驱动程序一起使用。


编辑:好像this guy got 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);
}

答案 1 :(得分:3)

最好的选择是使用参数化查询,然后您不必转义字符串。

如果您仍想自己将查询放在一起,那么为SQL Server(T-SQL)转义字符串文字的正确方法是用两个撇号替换字符串中的每个撇号(')。

答案 2 :(得分:0)

简短的回答是:使用连接库提供的任何机制,它实际上与数据库无关。如果您正在使用ADO,那么您有参数化查询,如果您正在使用其他内容(我对PHP一无所知),那么请使用该库提供的任何内容。

滚动你自己可能是一个坏主意,因为你很可能会出错,例如正确处理评论分隔符。