簡體   English   中英

使用“%”從SQL查詢中獲得奇怪的結果

[英]get weird results from SQL query using “%”

我試圖使用SQL從數據庫中獲取結果,但是結果與我用作輸入的內容不一致。 我總是從那些同時包含整數和字符的人那里得到結果。 例如,如果我搜索“ liu”,則會得到“ 2LK020”的結果。 我既無法使用整數搜索也無法獲得正確的結果...我使用:

    $result = queryDatabase(
    "SELECT course_tag, course_name FROM course WHERE course_tag OR course_name LIKE ?",
    array(1 => '%' .$parameters[0]. '%')

使用“%”有問題嗎? 還是為什么我會得到這個奇怪的答案?

閱讀此: http : //dev.mysql.com/doc/refman/5.7/en/operator-precedence.html

你做的相當於

WHERE course_tag OR (course_name LIKE ?)

涉及到

WHERE true/false OR true/false

只要course_tag不是空字符串,null或其他“ falsey”值,它幾乎總是會評估為true值,並使整個WHERE子句評估為true

您不能針對單個LIKE值測試多個字段。 那根本行不通。 您需要分別測試每個:

WHERE (course_tag LIKE ?) OR (course_name LIKE ?)

但是,由於您要進行%...%雙通配符搜索,因此您可以通過

WHERE CONCAT(course_tag, course_name) LIKE ?

暫無
暫無

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

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