Php SQL查询给出了一个错误,但看起来很好

Php SQL查询给出了一个错误,但看起来很好,php,sql-server,Php,Sql Server,所以,这里是查询(从浏览器复制和粘贴,直接从php代码中回显) 如果我从我的“测试页面”运行它,它工作正常。当我在需要的页面中运行完全相同的查询时,会出现以下错误: Array ( [0] => Array ( [0] => 42000 [SQLSTATE] => 42000 [1] => 102 [code] => 102 [2] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorre

所以,这里是查询(从浏览器复制和粘贴,直接从php代码中回显)

如果我从我的“测试页面”运行它,它工作正常。当我在需要的页面中运行完全相同的查询时,会出现以下错误:

Array ( [0] => Array ( [0] => 42000 [SQLSTATE] => 42000 [1] => 102 [code] => 102 [2] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near 'efficacia'. [message] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near 'efficacia'. ) ) 1

我正在使用SQL server。

有一个问题,您没有正确地转义引用。转义是通过在它们前面加上反斜杠来完成的,如下所示:

INSERT INTO Azioni_report 
    (Chiusa, Data, Descrizione, ID_report, IntEst, Tipo, Responsabile) 
VALUES
    (0, CONVERT(date, '2-12-2014', 105), 'verifica dell\'\'efficacia', 1049, 1, 2, 12);
为了完全避免这种情况,请尝试阅读PDO或mysqli以及PHP中查询的参数化(或绑定):

-

-


这个
'verifica dell''efficacia'
你有两个
'
一个接一个。您想做什么,添加撇号/引号?是的,我需要撇号。尝试
'verifica dell'\'efficacia'
'verifica dell'efficacia'
而不是在代码中使用sql注入漏洞方法,您应该参数化查询。这将保护您的系统并为您解决此问题。请使用sql参数@Fred ii-:您可以通过将它们加倍来完成。正如我所说的,我使用SQL server,而转义引号是通过将它们加倍来完成的。
INSERT INTO Azioni_report 
    (Chiusa, Data, Descrizione, ID_report, IntEst, Tipo, Responsabile) 
VALUES
    (0, CONVERT(date, '2-12-2014', 105), 'verifica dell\'\'efficacia', 1049, 1, 2, 12);