Hallo,
ich habe eine Suchfunktion, mit der User nach Einträgen in einer Datenbank suchen können.
Geben sie "test" ein, erhalten sie alle DB-Einträge, die das Wort "test" enthalten.
Geben sie "test hallo" ein, erhalten sie nichts, da "test hallo" in diesem Zusammenhang nicht existiert.
Nun kann es ja sein, dass ein DB-Eintrag die Wörter "hallo" und "test" enthält, aber halt nicht hintereinander, wie es der User eingibt. Dennoch soll er den DB-Eintrag als Treffer angezeigt bekommen.
Für die DB-Abfrage verwende ich:
$search ist die Eingabe des Users.
So hatte ich den Gedanken, die Eingabe vom Benutzer, also den String, in einzelne Wörter zu splitten, das Leerzeichen trennt die Wörter:
Und die Wörter dann in ein Array zu setzen:
Und in der SQL-Abfrage dann $search durch $searchword zu ersetzen.
Nach meinen Tests funktioniert das sogar, was mich selbst durchaus erstaunt, da ich nun wirklich kaum was von PHP verstehe.
Nun meine Frage: Ist diese Methode "sicher", also funktioniert das wirklich so oder sollte ich das lieber anders lösen? Wie würdet Ihr das machen?
ich habe eine Suchfunktion, mit der User nach Einträgen in einer Datenbank suchen können.
Geben sie "test" ein, erhalten sie alle DB-Einträge, die das Wort "test" enthalten.
Geben sie "test hallo" ein, erhalten sie nichts, da "test hallo" in diesem Zusammenhang nicht existiert.
Nun kann es ja sein, dass ein DB-Eintrag die Wörter "hallo" und "test" enthält, aber halt nicht hintereinander, wie es der User eingibt. Dennoch soll er den DB-Eintrag als Treffer angezeigt bekommen.
Für die DB-Abfrage verwende ich:
Code:
SELECT * FROM table WHERE title LIKE '%".$search."%' OR text LIKE '%".$search."%'
So hatte ich den Gedanken, die Eingabe vom Benutzer, also den String, in einzelne Wörter zu splitten, das Leerzeichen trennt die Wörter:
Code:
$searchwords = preg_split('/[\s]+/', $search);
Und die Wörter dann in ein Array zu setzen:
Code:
foreach($searchwords as $searchword)
Und in der SQL-Abfrage dann $search durch $searchword zu ersetzen.
Nach meinen Tests funktioniert das sogar, was mich selbst durchaus erstaunt, da ich nun wirklich kaum was von PHP verstehe.
Nun meine Frage: Ist diese Methode "sicher", also funktioniert das wirklich so oder sollte ich das lieber anders lösen? Wie würdet Ihr das machen?