mssql+;php准备的语句语法错误,使用%

mssql+;php准备的语句语法错误,使用%,php,sql,sql-server,syntax,Php,Sql,Sql Server,Syntax,我有一个小代码片段: $sql .= " (cOriginalFilename LIKE %?%)"; 这是完整的查询: Select cMsgID, cDocType, cOriginalFilename, cSubAddress1, cRecipientID, cSenderID, cStatus, cStatusDateTime From tMessage

我有一个小代码片段:

$sql .= " (cOriginalFilename LIKE %?%)";
这是完整的查询:

Select  cMsgID, 
        cDocType, 
        cOriginalFilename, 
        cSubAddress1, 
        cRecipientID, 
        cSenderID, 
        cStatus, 
        cStatusDateTime
From    tMessages
Where   (cOriginalFilename LIKE %?%)
确切错误消息:

数组([0]=>Array([0]=>42000[SQLSTATE]=>42000[1]=>102[code]=>102[2]=>[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]在“@P1”附近语法不正确。[消息]=>[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]在“@P1”附近语法不正确)

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


注意:这是php和mssql

需要在您分配给参数的变量中加入%符号,而不是在查询中。

您已经接近-只需为此引用
%
通配符即可:

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

@Siyual谢谢你,成功了!我从来不擅长计算语法。如果你发表评论作为答案,我会很高兴地选择它作为解决问题的答案。领先你一步,哈哈。没问题:)stackoverflow刷新了我:)我认为这个解释同样好。我通常把
%
放在values.Ty@Evert中,我想知道为什么我被否决了。但我不是唯一一个用这个的人。