sql >> Base de Datos >  >> RDS >> Mysql

Solicitud doble mysql/php para ajax

  1. Tu código es vulnerable a la inyección SQL.de verdad debería usar declaraciones preparadas , en el que pasa sus variables como parámetros que no se evalúan para SQL. Si no sabe de qué estoy hablando o cómo solucionarlo, lea la historia de Bobby Tables .

  2. Deje de escribir código nuevo con la antigua extensión MySQL:ya no se mantiene y la comunidad ha comenzado el proceso de desaprobación . En su lugar, debe usar el mejorado MySQLi extensión o el PDO capa de abstracción.

  3. Más información sobre Uniones SQL .

  4. de verdad debe esforzarse por cambiar su esquema para tener:

    • una clave externa de destino en la tabla de hoteles (si un hotel está asociado con no más de un destino); o

      ALTER TABLE sirev_Hotels
       ADD COLUMN hoDestination INT,
       ADD FOREIGN KEY hoDestination REFERENCES sirev_Dests (deDestCode)
      
    • una tabla de relaciones destino-hotel (si un hotel se puede asociar con múltiples destinos).

      CREATE TABLE sirev_DestinationHotels (
        dehoDestination INT,
        dehoHotel INT,
        FOREIGN KEY dehoDestination REFERENCES sirev_Dests  (deDestCode),
        FOREIGN KEY dehoHotel       REFERENCES sirev_Hotels (hoCode)
      )
      
  5. Si eso no es posible, puede usar FIND_IN_SET() funcionar como un criterio de unión:

    SELECT hoCode, hoName
    FROM   sirev_Hotels
      JOIN sirev_Dests ON FIND_IN_SET(sirev_Hotels.hoCode, sirev_Dests.deHotels)
    WHERE  sirev_Dests.deDestName = ?
    
  6. Habiendo unido las tablas y obtenido el hoCode y hoName de todos los hoteles en su destino deseado, puede recorrer el conjunto de resultados generando , aplicando htmlentities() según corresponda.