【发布时间】:2010-01-27 11:47:23
【问题描述】:
我想知道 PHP 中 SQL Server 转义字符串的等效项是什么?
【问题讨论】:
-
如果您使用像 PDO 这样的包装器,则不必担心这一点,因为您可以使用参数化查询。如果可以,请使用包装器。
-
抱歉,没有权限使用 PDO。
标签: php sql-server tsql
我想知道 PHP 中 SQL Server 转义字符串的等效项是什么?
【问题讨论】:
标签: php sql-server tsql
好问题,我不知道,但您可以将 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);
}
【讨论】:
最好的替代方法是使用参数化查询,这样您就不必转义字符串。
如果您仍想自己将查询放在一起,为 SQL Server (T-SQL) 转义字符串文字的正确方法是将字符串中的每个撇号 (') 替换为两个撇号。
【讨论】:
简短的回答是:使用您的连接库提供的任何机制,它实际上与数据库无关。如果您使用的是 ADO,则您有参数化查询,如果您使用的是其他东西(我对 PHP 一无所知),那么请使用该库提供的任何内容。
自己动手可能是个坏主意,因为你很可能会出错,例如正确处理注释分隔符。
【讨论】: