Ich möchte nach einem Problem fragen, das ich gegenüberstelle.Mysql Suche wie 2 Wörter order
Ich habe den vollständigen Namen in 1 Spalte gespeichert, Beispiel: "John Doe".
Aber auf eine Suche beispielsweise ausführen:
SELECT * FROM client WHERE name LIKE '%Doe John%';
Ergebnis: 0 Zeilen.
Wenn ich zum exakten Spielspeicher in der Datenbank wechsel, fand es eine Reihe.
SELECT * FROM client WHERE name LIKE '%John Doe%';
Ergebnis: 1 Zeile.
Meine Frage ist, wie man in der Datenbank sucht, ohne die Reihenfolge des Wortes zu nehmen.
In OOP Framework ist der Code:
$like = 'Doe John';
$this->db->select('*')->from('client')->like('name', $like)->get();
auch getestet ich das, aber ich habe das gleiche Ergebnis:
$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;
}
Wenn jemand Trog geleitet dieses und hat i schätzen bessere Lösung die gemeinsame Nutzung! .
Vielen Dank für Ihre Anregung, ist das, was ich in php mit der Explosion Funktion machte die "LIKE '% wie%' AND LIKE '% wie%'" zu erhalten, aber noch kein Ergebnis. ! – ndAR
Erwarten Sie immer eine Eingabe, die 2 Namen enthält? –