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

时间:2014-12-02 14:38:39

标签: php sql-server

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

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)

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

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服务器。

1 个答案:

答案 0 :(得分:1)

存在一个问题,即您没有正确转义报价。转义是通过在反斜杠\之前添加它们来完成的:

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中查询的参数化(或绑定):

  

PDO - PDO::prepare

     

mysqli - Prepared Statements