所以我需要通过查看一个字段来从 MySQL 表中选择数据,看看它是否有某个单词,并在动态生成的 where 子句中做很多其他事情。
在过去使用旧的 mysql 扩展时,我会这样做:
select [bunch of stuff] left join [bunch of stuff] where
`field` rlike "(?=.*word1)(?=.*word2)(?=.*word3)..."
and [more where..] order by [order stuff]
现在当然我使用 mysqli 和一个准备好的语句......
select [bunch of stuff] left join [bunch of stuff] where
match(`field`) against(?,?,?...)
and [more where..] order by [order stuff]
不幸的是,我得到了一个 InnoDB 表,这意味着我没有全文搜索,这将使我将一些类似的语句链接在一起,如下所示:
select [bunch of stuff] left join [bunch of stuff] where
`field` like concat("%",?,"%") or `field` like concat("%",?,"%") ...
and [more where..] order by [order stuff]
但这意味着它打破了我在这里的“和”链,需要在每个“或”中重复[更多地方..]......这一定是错误的,我也一直在盯着这个现在很久了。
有任何想法吗?