如何在 php 中为 tsql 字符串转义单引号(ms sql)

Posted

技术标签:

【中文标题】如何在 php 中为 tsql 字符串转义单引号(ms sql)【英文标题】:How to escape single quotes in php for tsql string (ms sql) 【发布时间】:2017-05-18 11:56:21 【问题描述】:

如何在 stuff 函数中转义单引号?我正在将 Microsoft SQL 与 php 连接起来。

$hcode = $_GET['hcode'];
$sql = "SELECT AB.HCode, STUFF(AB.Name1,1,6, '') FROM Article AB WHERE Mandant=1 AND Language= 'EN' AND HCode= '".$hcode."' AND AB.Name1 IS NOT NULL";
$result = sqlsrv_query($conn, $sql);

【问题讨论】:

更好地解释一下你的 sql 代码似乎是正确的......你有错误吗? 我的错误是我忘记将 stuff 函数命名为 ... STUFF() AS Name 。现在一切正常 【参考方案1】:

要对 MS SQL 使用单引号转义字符串,我们需要通过添加另一个单引号来转义它。

以下函数执行此操作。所以,你可以试试这个功能:

public static function mssql_escape($unsafe_str) 

    if (get_magic_quotes_gpc())
    
        $unsafe_str = stripslashes($unsafe_str);
    
    return $escaped_str = str_replace("'", "''", $unsafe_str);

//for example $unsafe = "AB'CD'EF";
$escaped = mssql_escape($unsafe);
echo $escaped;// Would output the escaped string as  "AB''CD''EF"

【讨论】:

以上是关于如何在 php 中为 tsql 字符串转义单引号(ms sql)的主要内容,如果未能解决你的问题,请参考以下文章

PHP教程:PHP中单引号与双引号的区别分析

PHP中单引号与双引号的区别分析

正则表达式在单引号内转义双引号

php字符串中单引号''和双引号“”的区别

PHP,单双引号的区别‘“”“”’

PHP字符串定义方式和单引号双引号的区别