[英]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.