在 PHP 中的 MS SQL 查询中转义 $ 字符

Escape $ character inside a MS SQL query in PHP

我有一种情况,我必须在 MS SQL 查询中使用 $(美元符号),因为 table 是这样命名的(例如 [我的公司名称$Fixed Asset].[描述]), 但PHP识别部分"$Fixed" 作为一个变量,然后当我尝试在浏览器中执行代码时它会抛出一个错误,例如“注意:未定义变量:固定”。

如何转义这个字符?

这是我尝试使用的代码部分:

    <?php
    if (isset($_POST['submit'])) {
        if ($_POST['password'] === 'mypass') {

            $result = mssql_query("SET ANSI_NULLS ON;");
            $result1 = mssql_query("SET ANSI_WARNINGS ON;"); 
            $query = mssql_query("

TRUNCATE TABLE [fixed_assets].[dbo].[fa_masterdata];

INSERT INTO [fixed_assets].[dbo].[fa_masterdata]

SELECT  
[My company name$Fixed Asset].[No]
,[My company name$Fixed Asset].[Description]
,[Search Description]
,[Description 2]
,[Location Code]
,[Vendor No_]
,[My company name$FA Depreciation Book].[Disposal Date]
,[My company name$FA Location].[Name]
,[My company name$Comment Line].Code
,[My company name$Comment Line].Comment
FROM [SQL SERVER NAME\INSTANCE].[MY COMPANY].[dbo].[My company name$Fixed Asset]


full outer join [SQL SERVER NAME\INSTANCE].[MY COMPANY].[dbo].[My company name$FA Location]
on [My company name$Fixed Asset].[FA Location Code] = [My company name$FA Location].[Code]

full outer join [SQL SERVER NAME\INSTANCE].[MY COMPANY].[dbo].[Record Link]
on [My company name$Fixed Asset].[No_] = convert(varchar(100),SUBSTRING([Record Link].[Record ID],8,8))

full outer join [SQL SERVER NAME\INSTANCE].[MY COMPANY].[dbo].[My company name$Comment Line]
on [My company name$Comment Line].[No_] = [My company name$Fixed Asset].[No_]

full outer join [SQL SERVER NAME\INSTANCE].[MY COMPANY].[dbo].[My company name$FA Depreciation Book]
on [My company name$FA Depreciation Book].[Fa No_] = [My company name$Fixed Asset].[No_]

where [My company name$Fixed Asset].[No_] != null");

    echo "<br/><br/><div class='alert alert-success col-sm-offset-5 col-sm-2'><span>Fixed assets data imported from NAV successfully!!</span></div>";
            } else {
                echo "<br/><br/><span>Import failed! (wrong password entered?)";
            }
    }
    ?>

请指教。任何建议都非常受欢迎。
谢谢大家

您可以对 $ 进行转义,这样它就不会被 PHP 读取为变量。

echo "$test";

演示:https://eval.in/605867 Vs. https://eval.in/605866(这是空的,因为 $test 不存在)

...

或者因为您的查询不使用单引号,所以只使用单引号来封装字符串。

echo '$test';