在PHP

时间:2016-07-15 10:59:53

标签: php sql-server

我有一种情况,我必须在MS SQL查询中使用$(美元符号),因为表是以这种方式命名的(例如 [我的公司名称$固定资产]。[描述] ),但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?)";
            }
    }
    ?>

ERROR SAMPLE

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

1 个答案:

答案 0 :(得分:1)

您可以转义$,然后PHP不会将其作为变量读取。

echo "\$test";

演示:https://eval.in/605867与。 https://eval.in/605866(由于$test不存在而为空)

...

或者由于您的查询不使用单引号,因此只需使用单引号进行字符串封装。

echo '$test';