Mysql
 sql >> Database >  >> RDS >> Mysql

Doppia richiesta mysql/php per ajax

  1. Il tuo codice è vulnerabile a SQL injection. Tu davvero dovrebbe utilizzare dichiarazioni preparate , in cui si passano le variabili come parametri che non vengono valutati per SQL. Se non sai di cosa sto parlando o come risolverlo, leggi la storia di Tabelle Bobby .

  2. Per favore, smetti di scrivere nuovo codice con l'antica estensione MySQL:non è più mantenuta e la community ha iniziato il processo di ritiro . Invece dovresti usare il migliorato MySQLi o il DOP livello di astrazione.

  3. Ulteriori informazioni su join SQL .

  4. Tu davvero dovrebbe cercare di cambiare il tuo schema per avere uno dei seguenti:

    • una chiave esterna di destinazione nella tabella hotel (se un hotel è associato a non più di una destinazione); o

      ALTER TABLE sirev_Hotels
       ADD COLUMN hoDestination INT,
       ADD FOREIGN KEY hoDestination REFERENCES sirev_Dests (deDestCode)
      
    • una tabella delle relazioni destinazione-hotel (se un hotel può essere associato a più destinazioni).

      CREATE TABLE sirev_DestinationHotels (
        dehoDestination INT,
        dehoHotel INT,
        FOREIGN KEY dehoDestination REFERENCES sirev_Dests  (deDestCode),
        FOREIGN KEY dehoHotel       REFERENCES sirev_Hotels (hoCode)
      )
      
  5. Se ciò non è possibile, puoi utilizzare FIND_IN_SET() funzione come criterio di unione:

    SELECT hoCode, hoName
    FROM   sirev_Hotels
      JOIN sirev_Dests ON FIND_IN_SET(sirev_Hotels.hoCode, sirev_Dests.deHotels)
    WHERE  sirev_Dests.deDestName = ?
    
  6. Dopo aver unito le tabelle e ottenuto il hoCode e hoName di tutti gli hotel nella destinazione desiderata, puoi scorrere il set di risultati generando <option value="$hoCode">$hoName</option> , applicando htmlentities() a seconda dei casi.