- Ich habe eine MySQL-Tabelle, die Fragen für Benutzer enthält.
- Jedem Benutzer ist eine Kategorie zugewiesen.
- Jede Frage kann auf eine oder mehrere Benutzerkategorien ausgerichtet sein.
- Die Kategorie der Frage befindet sich in einer Spalte in der Fragetabelle und nicht in einer separaten Tabelle.
- Für Fragen, die mehrere Benutzergruppen zielen, wird jede Kategorie durch ein Zeichen wie
|
vom Tisch zu bekommen alle Fragen getrennt werden, in denen ein bestimmten Benutzer Kategorie paßt Ich versuche, dass der Zeichenfolge, die sich in der Kategorie-Spalte für eine Frage befindet.Passende Wörter in Zeichenfolge
Ich habe in ein paar Probleme lief:
$string^
wird nicht funktionieren, da die Zeichenfolge ich mit vergleichen bin versucht, etwas sein kann, wie Retail|Field Based
ich keine WHERE category LIKE "%'.$category.'%"
weil einige Kategorien verwenden können teilen Wörter. Zum Beispiel: Retail
und Retail Roadshow
Wenn Retail
die Kategorie war, würde es paßt auch auf Retail Roadshow
ich etwas bin ratlos, wie dies zu tun mit der aktuellen Datenbankstruktur. Ich plane nicht, die Struktur der Datenbank zu ändern, aber möglicherweise, wenn ich nicht eine funktionierende Antwort bekommen kann, wie es zurzeit funktioniert.
Ihr Instinkt ist korrekt, eine MySQL-Tabelle sollte keine Art von Begrenzungsdaten enthalten, jeder Wert sollte in einer eigenen Zeile in einer anderen Tabelle vorhanden sein e. Befolgen Sie diesen Grundsatz und viele der Probleme, die Sie am Rande der Begegnung haben, werden verschwinden. –
Wenn Sie den Pipe Delimeter '|' behalten möchten, können Sie '$ sql =" select * von Ihrer_Tabelle wählen, wobei Kategorie = '$ Kategorie' oder Kategorie wie '$ Kategorie |%' oder Kategorie LIKE '% | $ Kategorie |% 'oder Kategorie wie'% | $ category '";' – MonkeyZeus
Was passiert, wenn eine Benutzerkategorie tatsächlich eine Pipe im Kategorienamen hat? – MonkeyZeus