【问题标题】:How to prevent SQL to store escape character with single quote character如何防止 SQL 用单引号字符存储转义字符
【发布时间】:2018-03-15 11:55:26
【问题描述】:

我需要存储在开头和结尾都有单引号的文本字符串。 我正在从 PHP 发出 JavaScript 命令。 我将引号添加到字符串中,如下所示:

echo '<script type="text/javascript">';
echo 'function GetCodes() {';
        echo 'var vlist = document.getElementById("vListOfCodes");';
        echo 'var vcodes = "";';
        echo 'var i;';
        echo 'for (i = 0; i < vlist.length; i++) {';
            echo 'if (i == 0) {';
                echo 'vcodes = vcodes + "\'" + vlist.options[i].value + "\'";';
            echo '}';
            echo 'else {';
                echo 'vcodes = vcodes + ",\'" + vlist.options[i].value + "\'";';
            echo '}';
        echo '}';
        echo 'document.getElementById("vStringOfCodes").value = vcodes;';
    echo '}';
echo '</script>';

当提交表单并将 $_POST['vStringOfCodes'] 数据保存到 SQL SERVER 表时,反斜杠字符会与单引号一起添加,这意味着

'mystring','mystring2',...

我有

\'mystring\',\'mystring2\',...

如何防止在此处添加这些反斜杠?

【问题讨论】:

    标签: javascript php sql-server


    【解决方案1】:

    可以使用php原生函数stripslashes

    $str = "\'mytext\'";
    echo stripslashes($str);
    //outputs 'mytext'
    //in your case
    echo stripslashes($_POST['HiddenInput'])
    

    Php function stripslashes

    【讨论】:

    • 问题是,它是 PHP 中的 javascript...我如何将 javascript var 传递给 php 并返回?
    • 你想在php和javascript之间交换变量还是你想解析javascript?如果后者从 javascript 发送另一个字段中的数据
    • 只解析 JavaScript。目前找到的唯一解决方案是像这样存储并在 SQL Stored Proc DECLARE @var2 nvarchar(100) = (SELECT REPLACE(@var1, '\', '')) 中使用以在我执行 SELECT...WHERE IN... 时剥离它们现在它正在解决我的问题,但我不确定这是最好的解决方案未来
    • 你为什么不在php中使用我的答案?您只需stripslashes($_POST['HiddenInput'])
    • 我没有使用它,因为我没有直接思考......一旦我把鼻子从屏幕上移开,图片就变得更清晰了;)谢谢,经过测试和工作。你能把你的答案调整到最后一个,这样我就可以接受了吗?
    猜你喜欢
    • 2011-09-26
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 2013-03-18
    • 1970-01-01
    相关资源
    最近更新 更多