SQL -> Suchabfrage mit mehreren Worten
Guma
- php
Hallo Zusammen,
ich überlege mir gerade wie ich ein Suchfeld mit mehreren Worten auslesen kann und mit ODER die passenden Datenbankeinträge ausgebe.
Ich fange einfach mal an...
$words = "Auto Motorrad";
$w = explode(" ", $words);
$where = "";
reset($w);
while (list($k, $v) = each($w)) {
$where .= sprintf(" typ like '%%%s%%' or ", $v);
}
$query = sprintf("select typ from mytable where %s", $where);
Kann mich das ans Ziel bringen? Ich komme hier nicht weiter. Wie kann ich z.B. mehr als zwei Worte berücksichtigen? Mir fehlt da eine einfache Lösung.
Grüße von Guma
Hallo Forum,
ich überlege mir gerade wie ich ein Suchfeld mit mehreren Worten auslesen kann und mit ODER die passenden Datenbankeinträge ausgebe.
Query
$query = sprintf("select typ from mytable where %s", $where);
Kann mich das ans Ziel bringen? Ich komme hier nicht weiter. Wie kann ich z.B. mehr als zwei Worte berücksichtigen? Mir fehlt da eine einfache Lösung.
Du hast ein Problem mit SQL, der PHP-Code interessiert daher niemanden.
Lass bitte das SQL-Statement, das an dein DBMS geschickt wird ausgeben und poste es hier.
Außerdem solltest du dich mit SQL-Injection befassen, dein Code erlaubt z.B., dass sich jemand die komplette Tabelle ausgeben lässt.
Desweiteren interessieren mich Name und genaue Versionsnummer deines DBMS.
Gruß
Alexander Brock
Hallo nochmal, ich konnte auch die Volltextsuche nicht zum laufen bringen. Die sieht so aus. ich nutze MySQL 5.0
SELECT titel FROM fahrzeuge
WHERE MATCH typ AGAINST ('Auto Motorrad ')
Was mache ich nur falsch=?
Guma
hi,
SELECT titel FROM fahrzeuge
WHERE MATCH typ AGAINST ('Auto Motorrad ')
Was mache ich nur falsch=?
Woher zum Geier sollen wir das wissen, wenn du uns noch nicht einmal eine Fehlermeldung mitteilst, sondern uns stattdessen mit Unsinn á la "konnte ich nicht zum Laufen bringen" kommst?
Tipps für Fragende - solltest du doch aber inzwischen eigentlich kennen.
gruß,
wahsaga
Hallo Wahsager,
MySQL 5.0 meldet bei mir:
#1191 - Can't find FULLTEXT index matching the column list
wenn ich per PHPMyAdmin fogendes eingebe:
SELECT titel FROM fahrzeuge
WHERE MATCH typ AGAINST ('Auto Motorrad ')
Es grüßt Guma
hi,
MySQL 5.0 meldet bei mir:
#1191 - Can't find FULLTEXT index matching the column list
Und was sagt dir das?
Hast du versucht, es dir zu übersetzen?
gruß,
wahsaga
Hey,
Und was sagt dir das?
Hast du versucht, es dir zu übersetzen?
Übersetzen bringt doch primär gar nix. In google eingeben und die Lösung konsumieren.
Tschö
echo $begrüßung;
Where klausel bauen ....
$where = "";
reset($w);
while (list($k, $v) = each($w)) {
$where .= sprintf(" typ like '%%%s%%' or ", $v);
}
Kann mich das ans Ziel bringen?
Nicht ganz. Du hast pro Suchwort ein "or" hintendran hängen. Das ist beim letzten Begriff zu viel. Eleganter als das nachträgliche Abschneiden ist es, die Werte aus dem Array von implode() und einem passenden String als "Klebstoff" dazwischen für die WHERE-Klausel zusammensetzen zu lassen.
echo "$verabschiedung $name";