-
Ihr Code ist anfällig für SQL-Injection. Sie wirklich sollten vorbereitete Anweisungen verwenden , an die Sie Ihre Variablen als Parameter übergeben, die für SQL nicht ausgewertet werden. Wenn Sie nicht wissen, wovon ich spreche oder wie Sie es beheben können, lesen Sie die Geschichte von Bobby Tables .
-
Bitte hören Sie auf, neuen Code mit der alten MySQL-Erweiterung zu schreiben:Sie wird nicht mehr gepflegt und die Community hat mit dem Ablehnungsprozess . Stattdessen sollten Sie entweder das verbesserte MySQLi verwenden Erweiterung oder das PDO Abstraktionsschicht.
-
Erfahren Sie mehr über SQL-Joins .
-
Sie wirklich sollten sich bemühen, Ihr Schema so zu ändern, dass es entweder:
-
ein Zielfremdschlüssel in der Hoteltabelle (wenn ein Hotel nicht mehr als einem Ziel zugeordnet ist); oder
ALTER TABLE sirev_Hotels ADD COLUMN hoDestination INT, ADD FOREIGN KEY hoDestination REFERENCES sirev_Dests (deDestCode)
-
eine Tabelle der Beziehungen zwischen Reiseziel und Hotel (wenn ein Hotel mehreren Reisezielen zugeordnet werden kann).
CREATE TABLE sirev_DestinationHotels ( dehoDestination INT, dehoHotel INT, FOREIGN KEY dehoDestination REFERENCES sirev_Dests (deDestCode), FOREIGN KEY dehoHotel REFERENCES sirev_Hotels (hoCode) )
-
-
Wenn das nicht möglich ist, können Sie MySQLs
FIND_IN_SET() Funktion als Join-Kriterium:SELECT hoCode, hoName FROM sirev_Hotels JOIN sirev_Dests ON FIND_IN_SET(sirev_Hotels.hoCode, sirev_Dests.deHotels) WHERE sirev_Dests.deDestName = ?
-
Nachdem Sie sich den Tischen angeschlossen und den
hoCode
erhalten haben undhoName
aller Hotels an Ihrem gewünschten Zielort können Sie die Ergebnismenge durchlaufen, indem Sieausgeben , indem Sie
htmlentities()
anwenden nach Bedarf.