2016-07-15 3 views
0

テーブルがこのように指定されているので、私はMS SQLクエリ内で$(ドル記号)を使用する必要があります(例:[私の会社名$固定[説明])、PHPは部分を認識します"$ Fixed"を変数として使用し、後でブラウザでコードを実行しようとするとエラーが発生します。 "Notice:未定義の変数:固定"。

この文字をエスケープするにはどうすればよいですか?ここで

は、私が使用しようとしていますコードの一部です:

<?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

あなたもPHPを表示できますか。文字列としてクエリを構築している場合は、二重引用符( ")ではなく一重引用符( ')で文字列をラップすることをお勧めします。補語の代わりに文字列を使用します。 – ADyson

答えて

1

$からエスケープすると、PHPによって変数として読み取られません。

echo "\$test"; 

デモ:https://eval.in/605867対。

$testのdoesntが存在するため、空である)https://eval.in/605866 ...

または単に文字列のカプセル化のための単一引用符を使用する単一引用符を使用していないクエリ以来

echo '$test'; 
+0

代わりに、一重引用符[https: //eval.in/605868](https://eval.in/605868)。そのようにして、PHPは '$ test'を変数として解釈するのではなく、通常の文字列として解釈します – FirstOne

+0

これはクエリ全体を変更する必要があり、私はmssqlが二重引用符で囲まれた文字列カプセル化で動作しているのかどうかはわかりません(私はそう思うでしょう)。ああ、更新がありました..クエリに一重引用符は使用されていません – chris85

+0

ドル記号の前にバックスラッシュ文字を追加する$ 私は百万年の間にこのことを決して考えていないだろうし、それはMS SQLクエリ内で正しく解釈されるだろう... PHPの中で...しかしねえ、毎日新しいことを学ぶ^ _ ^すべてありがとうそれを提案するため! –

関連する問題