Ich habe eine Abfrage geschrieben, um ähnliche IDs basierend auf Tags aus einer aktuellen ID zu finden, ähnlich wie amazons, die Sie auch möchten. Das Problem ist, in meinem Beispiel möchte ich Bookid 30 von dieser Suche ausschließen.Über spezifische MySQL-Abfrage funktioniert nicht
Hier ist meine Frage:
Anmerkung: $ ähnlich ist im Grunde eine Zeichenfolge mit Tags gefüllt mit ein paar „wie% item% oder“
$query = "SELECT * FROM books
WHERE bookid !=30
AND {$similar}
AND visible ='1'
AND level ='2'
LIMIT 3";
Der Teil, der nicht funktioniert aufgebaut ist, wo bookid! = Ich habe es versucht NICHT, <> Nachbestellung und was auch immer ich sonst finden könnte. Diese Abfrage funktioniert immer noch es gibt drei Zeilen aus, aber immer noch Bookid 30
Kann jemand erklären, was hier abgeht? Wird meine Abfrage zu kompliziert und muss neu strukturiert werden?
Die schlechte Alternative, die ich mir ausgedacht habe, war, das Limit auf 4 Elemente zu setzen, die es an eine while-Schleife schicken, um jede Zeile zu holen und die Bookid auszuschließen, die ich nicht brauche. Dies scheint nur sinnlos, wenn ich weiß, dass es in der Abfrage durchgeführt werden kann.
Ive dies durch den Wiederaufbau meiner Anfrage feste und ähnliche string $ Vor
SELECT * FROM books WHERE bookid !=30 AND tags LIKE '%one%' OR tags LIKE '% two%' OR tags LIKE '% three%' AND visible ='1' AND level ='2' LIMIT 3
Nach
SELECT * FROM books WHERE bookid !=30 AND (bookid!=30 AND tags LIKE '%one%') OR (bookid!=30 AND tags LIKE '% two%') OR (bookid!=30 AND tags LIKE '% three%') AND visible ='1' AND level ='2' LIMIT 3
Eine Sache, die ich bemerkt haben, das ist BookID seltsam! = Funktioniert nur, wenn es einen gibt am gleiten und zwischen jedem gleich oder ... ich habe versucht, jeden auszuwechseln und die frage würde nicht laufen, aber die aktuelle string funktioniert perfekt!
Danke,
Können Sie eine vollständige Abfrage-String einfügen ausgewertet werden? Oder ein Beispielwert von $ ähnlich? thx –