sql >> Databáze >  >> RDS >> Mysql

Dvojitý požadavek mysql/php pro ajax

  1. Váš kód je zranitelný vůči vložení SQL. Vy opravdu by měl používat připravené výpisy , do kterého předáváte své proměnné jako parametry, které se nevyhodnocují pro SQL. Pokud nevíte, o čem mluvím, nebo jak to napravit, přečtěte si příběh Tabulky Bobby .

  2. Přestaňte prosím psát nový kód se starým rozšířením MySQL:již není udržován a komunita zahájila proces ukončení podpory . Místo toho byste měli použít buď vylepšené MySQLi rozšíření nebo CHOP abstraktní vrstva.

  3. Další informace o připojení k SQL .

  4. Vy opravdu měli byste se pokusit změnit své schéma tak, aby mělo buď:

    • cizí klíč destinace v tabulce hotelů (pokud je hotel spojen pouze s jednou destinací); nebo

      ALTER TABLE sirev_Hotels
       ADD COLUMN hoDestination INT,
       ADD FOREIGN KEY hoDestination REFERENCES sirev_Dests (deDestCode)
      
    • tabulka vztahů mezi destinacemi a hotelem (pokud lze hotel přidružit k více destinacím).

      CREATE TABLE sirev_DestinationHotels (
        dehoDestination INT,
        dehoHotel INT,
        FOREIGN KEY dehoDestination REFERENCES sirev_Dests  (deDestCode),
        FOREIGN KEY dehoHotel       REFERENCES sirev_Hotels (hoCode)
      )
      
  5. Pokud to není možné, můžete použít MySQL FIND_IN_SET() fungovat jako kritérium spojení:

    SELECT hoCode, hoName
    FROM   sirev_Hotels
      JOIN sirev_Dests ON FIND_IN_SET(sirev_Hotels.hoCode, sirev_Dests.deHotels)
    WHERE  sirev_Dests.deDestName = ?
    
  6. Po spojení tabulek a získání hoCode a hoName ze všech hotelů v požadované destinaci, můžete přepnout smyčku na výslednou sadu s výstupem <option value="$hoCode">$hoName</option> , pomocí htmlentities() podle potřeby.



  1. Levé spojení s názvem dynamické tabulky odvozeným ze sloupce

  2. PHP – potíže s přidružením výsledků a jejich načtením v rámci MYSQL

  3. Může MySQL převést uložený čas UTC na místní časové pásmo?

  4. Jak vynutit jedinečné omezení v MySQL?