したがって、MySQLテーブルから1つのフィールドを調べてデータを選択し、そのフィールドに特定の単語が含まれているかどうかを確認し、動的に生成される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]
しかし、これは私がここに行っている「and」チェーンを壊し、すべての「or」で[もっとどこで..]繰り返す必要があることを意味します...これは間違っている必要があり、私もこれを見つめています長い間。
何か案は?