代码之家  ›  专栏  ›  技术社区  ›  Alec Smart

用于SQL Server的mysql_real_escape_string替代项[重复]

  •  7
  • Alec Smart  · 技术社区  · 15 年前

    这个问题已经有了答案:

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

    3 回复  |  直到 15 年前
        1
  •  7
  •   Community Mohan Dere    8 年前

    好问题,我不知道,但你可以用 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);
    }
    
        2
  •  3
  •   Guffa    15 年前

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

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

        3
  •  0
  •   Pondlife    15 年前

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

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