查找字符串传递到查询中的匹配MySQL字段

时间:2013-11-12 19:18:12

标签: php mysql string

这是我想要完成的伪(假)查询:

SELECT * FROM myTable
WHERE specific_field IS IN '{$stringPassedIn}'

然后在结果上我想抓住specific_field匹配传入的字符串的行。

在进行一些研究时,我发现有很多相反的情况,例如:

SELECT * FROM items WHERE items LIKE '%123456%'但这不是我要找的 - 我不相信。

这是真实世界的应用程序。在我的php代码中,我提取了一条错误消息。此错误消息包含特定的错误代码。我有一个代码表,我想比较这个错误字符串,然后返回包含字符串中的确切错误代码的行(如上面的第一个查询中所示)。所以我将整个短语传递给查询。如果这是可能的或实际的?或者有更好的方法来实现这一目标吗?

2 个答案:

答案 0 :(得分:3)

您可以撤消LIKE谓词:

SELECT * FROM myTable
WHERE '{$errorMessage}' LIKE CONCAT('%', errorCode, '%')

想想这个例子,下面的表达式将返回true:

'error number 12345 has occurred' LIKE '%12345%'

小心在$ errorMessage上进行适当的转义,以防它包含特殊字符。或者更好的是,使用预准备语句并将变量作为参数传递。

答案 1 :(得分:2)

查看MySQL string functions。你可以做点什么

SELECT * FROM myTable
WHERE LOCATE(`specificField`, '{$stringPassedIn}') is not 0