PHPのSQLServerは、単一引用符と二重引用符をエスケープ

2つのエスケープSQL Serverがあります。

最初のエスケープ文字は、単一引用符です(「)

「デフォルトでは、単一引用符単一引用符()(」)文字列は単一引用符が含まれている場合(「)、境界文字列である(()、最初の単一引用符、次の2つの単一引用符を使用する必要があります」 「)エスケープ文字です。

例:

ここでは、SQLの誤差があり、

INSERT INTO 
Cogs_PurchaseSale(
CREATETIME、UpdateTime、ApDate、
タイプ、変更、通貨、一方ExchangeRate、
[日付]、ストアコード、ItemColor、数量、
ProfitCenter、CreditNote)
SELECT 
GETDATE()、GETDATE()、 '2019年11月1日'、
ケースときLEN(のisNull(sm.Type、 'StockMovement'))> 0、その後、他のsm.Type 'StockMovement'末端、 '減少'、 'SYSTEM_LOCAL_CURRENCY'、 '1'、
MAX(SM。[日付])、LEFT(SM .RecipientWarehouse、4)、
sm.ItemCode + sm.ColorCode、和(sm.Qty)、
MAX(sm.ProfitCenter)、MAX(sm.Remark)
としてCogs_StockMovement FROM SM 
WHERE sm.APDate = '2019年11月1日'そして、LEN(sm.RecipientWarehouse)> 0 
GROUP BY sm.Type、sm.RecipientWarehouse、sm.ItemCode、sm.ColorCode

私は、SQLテーブルにこのレコードを配置する必要があり

$ failmsg =」
INSERT INTO Cogs_PurchaseSale(CREATETIME、UpdateTime、ApDate、タイプ、変更、通貨、一方ExchangeRate、[日付]、ストアコード、ItemColor、数量、ProfitCenter、CreditNote)
SELECT 
GETDATE()、GETDATE()、「2019-11- 01' 、
ケース場合LEN(のisNull(sm.Type、 'StockMovement'))> 0、次いで他sm.Type 'StockMovement'末端、 '減少'、 'SYSTEM_LOCAL_CURRENCY'、 '1'、
MAX(SM。[日]) 、LEFT(sm.RecipientWarehouse、4)、
sm.ItemCode + sm.ColorCode、和(sm.Qty)、
MAX(sm.ProfitCenter)、MAX(sm.Remark)
Cogs_StockMovement FROM SMとして
sm.APDate = '2019- 11-01' AND LEN(sm.RecipientWarehouse)> 0 
GROUP BY sm.Type、sm.RecipientWarehouse、sm.ItemCode、sm.ColorCode」。
。$ SQL = "更新Cogs_TaskListセットFailDesc = '"。str_replace( "'"、 " ''"。、($ failmsg)) " 'UpdateTime ='"日付( "はYmd H:I:S")「。 「どこID =」$番号。 $ RES = $ dbobj->クエリ($ sqlを);

  

ここではマナーstr_replaceは、2つの単一引用符単一引用符で置き換えます


もう一つは、二重引用符(「)をエスケープ

SET QUOTED_IDENTIFIER OFFは、「境界文字列は、文字列」は、それぞれ、」2を使用する必要がある場合。

 

 

おすすめ

転載: www.cnblogs.com/pianxiangongzi/p/11949297.html