mssql + php准备语句使用%语法不正确

时间:2015-07-17 18:06:40

标签: php sql sql-server syntax

我有这个小代码片段:

$sql .= " (cOriginalFilename LIKE %?%)";

这是完整的查询:

Select  cMsgID, 
        cDocType, 
        cOriginalFilename, 
        cSubAddress1, 
        cRecipientID, 
        cSenderID, 
        cStatus, 
        cStatusDateTime
From    tMessages
Where   (cOriginalFilename LIKE %?%)

确切的错误消息:

  

数组([0] =>数组([0] => 42000 [SQLSTATE] => 42000 [1] => 102 [代码] => 102 [2] => [微软] [SQL Server的ODBC驱动程序11] [SQL Server]' @ P1'附近的语法不正确。[message] => [Microsoft] [SQL Server的ODBC驱动程序11] [SQL Server]&附近的语法不正确#39; @ P1'。))

正如您所看到的那样,它正在制作一个准备好的语句,但它给了我一个无效的语法错误。当我删除%s时,它可以工作。我应该如何修改语法以使用%s?我无法找到有关此主题的任何信息。

注意:这是php和mssql

2 个答案:

答案 0 :(得分:1)

%符号需要包含在您为参数分配的变量中,而不是在查询中。

答案 1 :(得分:1)

你很接近 - 只需引用%通配符:

Select  cMsgID, 
        cDocType, 
        cOriginalFilename, 
        cSubAddress1, 
        cRecipientID, 
        cSenderID, 
        cStatus, 
        cStatusDateTime
From    tMessages
Where   (cOriginalFilename LIKE '%' + ? + '%')