私は直面している問題について質問したいと思います。2ワードのようなMysql検索
「John Doe」という名前の1列のフルネームが格納されています。
しかし、上の例のための検索を実行します。
SELECT * FROM client WHERE name LIKE '%Doe John%';
結果:0行。
データベースの完全一致ストアに切り替えると、行が見つかりました。
SELECT * FROM client WHERE name LIKE '%John Doe%';
結果:1行。
私の質問は、単語の順序を取らずにデータベースを検索する方法です。 OOPの枠組みで
コードは次のとおりです。
$like = 'Doe John';
$this->db->select('*')->from('client')->like('name', $like)->get();
はまた、私はこれをテストしたが、私は同じ結果だ:誰かがトラフこれに合格し、私は共有を感謝し、より良い解決策を持っている場合
$this->db->select('*')->from('client');
if($this->containTwoWords($like)) {
$explode = explode(' ', $like);
foreach($explode as $exploded){
$this->db->like('name', $exploded);
}
} else {
$this->db->like('name', $like);
}
$this->db->get();
function containTwoWords($like){
if(strpos($like, ' ') !== false) {
return true;
}
return false;
}
を! 。あなたの例の場合の
おかげで、 " '%のような%' LIKE '%のような%' AND LIKE" 私は得るために爆発する機能をPHPで作られたものですが、それでも検索結果はありません。 ! – ndAR
あなたは常に2つの名前を含む入力を期待していますか? –