Mysql
 sql >> Base de données >  >> RDS >> Mysql

Double requête mysql/php pour ajax

  1. Votre code est vulnérable à l'injection SQL. Vous vraiment devrait utiliser instructions préparées , dans lequel vous transmettez vos variables en tant que paramètres qui ne sont pas évalués pour SQL. Si vous ne savez pas de quoi je parle ou comment y remédier, lisez l'histoire de Bobby Tables .

  2. Veuillez arrêter d'écrire du nouveau code avec l'ancienne extension MySQL :elle n'est plus maintenue et la communauté a commencé le processus d'abandon . Au lieu de cela, vous devez utiliser l'amélioration MySQLi ou l'PDO couche d'abstraction.

  3. En savoir plus sur les jointures SQL .

  4. Vous vraiment devrait s'efforcer de modifier votre schéma pour avoir :

    • une clé étrangère de destination dans la table des hôtels (si un hôtel n'est associé qu'à une seule destination) ; ou

      ALTER TABLE sirev_Hotels
       ADD COLUMN hoDestination INT,
       ADD FOREIGN KEY hoDestination REFERENCES sirev_Dests (deDestCode)
      
    • un tableau des relations destination-hôtel (si un hôtel peut être associé à plusieurs destinations).

      CREATE TABLE sirev_DestinationHotels (
        dehoDestination INT,
        dehoHotel INT,
        FOREIGN KEY dehoDestination REFERENCES sirev_Dests  (deDestCode),
        FOREIGN KEY dehoHotel       REFERENCES sirev_Hotels (hoCode)
      )
      
  5. Si ce n'est pas possible, vous pouvez utiliser MySQL FIND_IN_SET() fonctionner comme critère de jointure :

    SELECT hoCode, hoName
    FROM   sirev_Hotels
      JOIN sirev_Dests ON FIND_IN_SET(sirev_Hotels.hoCode, sirev_Dests.deHotels)
    WHERE  sirev_Dests.deDestName = ?
    
  6. Avoir rejoint les tables et obtenu le hoCode et hoName de tous les hôtels de la destination souhaitée, vous pouvez parcourir le jeu de résultats en affichant <option value="$hoCode">$hoName</option> , en appliquant htmlentities() le cas échéant.