簡體   English   中英

在傳遞給查詢的字符串中查找匹配的MySQL字段

[英]Find Matching MySQL field in String Passed into Query

這是我要完成的偽(偽)查詢:

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

然后在結果上,我想抓取其中specific_field與傳入的字符串匹配的行。

在進行一些研究時,我發現有很多相反的情況,例如:

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

這是真實的應用程序。 在我的php代碼中,我提取了一條錯誤消息。 此錯誤消息包含特定的錯誤代碼。 我有一個代碼表,我想將此錯誤字符串與之進行比較,然后返回該字符串中包含確切錯誤代碼的行(如上面的第一個查詢)。 因此,我將整個短語傳遞給查詢。 這是否可能或可行? 還是有更好的方法來做到這一點?

您可以反轉LIKE謂詞:

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

考慮這個示例,以下表達式將返回true:

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

請小心對$ errorMessage進行適當的轉義,以防它包含特殊字符。 或更妙的是,使用准備好的語句並將變量作為參數傳遞。

看一下MySQL 字符串函數 你可以做類似的事情

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM