-
Kode Anda rentan terhadap injeksi SQL. Anda benar-benar harus menggunakan pernyataan yang disiapkan , tempat Anda meneruskan variabel sebagai parameter yang tidak dievaluasi untuk SQL. Jika Anda tidak tahu apa yang saya bicarakan, atau cara memperbaikinya, baca kisah Meja Bobby .
-
Tolong berhenti menulis kode baru dengan ekstensi MySQL kuno:tidak lagi dipertahankan dan komunitas telah memulai proses penghentian . Sebagai gantinya, Anda harus menggunakan MySQLi yang ditingkatkan ekstensi atau PDO lapisan abstraksi.
-
Pelajari tentang SQL join .
-
Anda benar-benar harus berusaha mengubah skema Anda untuk memiliki:
-
kunci asing tujuan di tabel hotel (jika hotel dikaitkan dengan tidak lebih dari satu tujuan); atau
ALTER TABLE sirev_Hotels ADD COLUMN hoDestination INT, ADD FOREIGN KEY hoDestination REFERENCES sirev_Dests (deDestCode)
-
tabel hubungan tujuan-hotel (jika sebuah hotel dapat dikaitkan dengan beberapa tujuan).
CREATE TABLE sirev_DestinationHotels ( dehoDestination INT, dehoHotel INT, FOREIGN KEY dehoDestination REFERENCES sirev_Dests (deDestCode), FOREIGN KEY dehoHotel REFERENCES sirev_Hotels (hoCode) )
-
-
Jika tidak memungkinkan, Anda dapat menggunakan
FIND_IN_SET()
berfungsi sebagai kriteria bergabung:SELECT hoCode, hoName FROM sirev_Hotels JOIN sirev_Dests ON FIND_IN_SET(sirev_Hotels.hoCode, sirev_Dests.deHotels) WHERE sirev_Dests.deDestName = ?
-
Setelah bergabung dengan tabel dan mendapatkan
hoCode
danhoName
dari semua hotel di tujuan yang Anda inginkan, Anda dapat mengulang hasil yang mengeluarkan<option value="$hoCode">$hoName</option>
, menerapkanhtmlentities()
sebagaimana mestinya.