跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • mysql like 问题求教
未分類
14 1 月 2021

mysql like 问题求教

mysql like 问题求教

資深大佬 : lixuda 4

在看 discuz 时候,发现搜索帖子时候

1 个关键词
SELECT t.tid, t.closed, t.author, t.authorid FROM pre_forum_thread t WHERE t.fid IN (‘2′,’36’,’37’,’4′,’39’) AND t.displayorder>=’0′ AND (0 OR t.subject LIKE ‘%key%’) ORDER BY tid DESC LIMIT 500

多个关键词:

SELECT t.tid, t.closed, t.author, t.authorid FROM pre_forum_thread t WHERE t.fid IN (‘2′,’36’,’37’,’4′,’39’) AND t.displayorder>=’0′ AND (1 AND t.subject LIKE ‘%key%’ AND t.subject LIKE ‘%key1%’) ORDER BY tid DESC LIMIT 500

就是 0 OR 与 1 AND 链接 like,这个有什么用处吗?
是防止 SQL 注入吗?

大佬有話說 (4)

  • 資深大佬 : eason1874

    不是安全考虑,就是为了方便,没查询价值的,查询的时候会被优化掉。

    其中一个条件为真,那就整个前缀 where 0,后面所有追加直接 OR condition 就行了,不用判断是不是第一个,要不要写 OR

    所有条件为真就整个前缀 where 1,后面追加直接 AND condition

  • 資深大佬 : taogen

    可能是方便动态拼接 SQL

  • 資深大佬 : msg7086

    当年还没有各种 ORM,所以要复杂的检索查询就需要手拼查询字符串。
    就像上面说的,先放一个 “1”,然后后面每次追加 “AND xxx LIKE xxx”,比合并条件然后再去删掉一个 AND 方便。

  • 資深大佬 : sodadev

    主要是懒

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具