Foros del Web » Programando para Internet » PHP »

Problema con UNION

Estas en el tema de Problema con UNION en el foro de PHP en Foros del Web. Hola a todos quisiera saber si alguien me puede decir cual es mi error al intentar unir 2 tablas aquí está mi código: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 03/04/2013, 20:08
 
Fecha de Ingreso: agosto-2008
Mensajes: 43
Antigüedad: 15 años, 8 meses
Puntos: 1
Problema con UNION

Hola a todos quisiera saber si alguien me puede decir cual es mi error al intentar unir 2 tablas aquí está mi código:

Código PHP:
Ver original
  1. if(isset($_POST['queryString'])) {
  2.             $queryString = $db->real_escape_string($_POST['queryString']);
  3.            
  4.             // Is the string length greater than 0?
  5.             if(strlen($queryString) >0) {
  6.             $query = $db->query("SELECT Hotel, Destino, Estado, Direccion FROM Hoteles WHERE Hotel  LIKE '%" . $queryString . "%' OR  Destino LIKE '%" . $queryString . "%'  OR  Estado LIKE '%" . $queryString . "%')
  7.            
  8.             UNION
  9.            
  10.             (SELECT Hotel, Destino, Estado, Direccion FROM Pago WHERE Hotel  LIKE '%" . $queryString . "%' OR  Destino LIKE '%" . $queryString . "%'  OR  Estado LIKE '%" . $queryString . "%'");

de antemano gracias.
  #2 (permalink)  
Antiguo 03/04/2013, 20:13
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema con UNION

Los paréntesis están de más (y uno no estaba completo):
Código SQL:
Ver original
  1. SELECT
  2.     Hotel,
  3.     Destino,
  4.     Estado,
  5.     Direccion
  6. FROM Hoteles
  7. WHERE
  8.     Hotel  LIKE '%" . $queryString . "%'
  9.     OR  Destino LIKE '%" . $queryString . "%'  
  10.     OR  Estado LIKE '%" . $queryString . "%'
  11. UNION
  12. SELECT
  13.     Hotel,
  14.     Destino,
  15.     Estado,
  16.     Direccion
  17. FROM Pago
  18. WHERE
  19.     Hotel  LIKE '%" . $queryString . "%'
  20.     OR  Destino LIKE '%" . $queryString . "%'  
  21.     OR  Estado LIKE '%" . $queryString . "%'
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 03/04/2013, 20:24
 
Fecha de Ingreso: agosto-2008
Mensajes: 43
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Problema con UNION

Gracias por tu pronta respuesta, pero lamentablemente me da este error:

Parse error: syntax error, unexpected T STRING in /.……… on line 22

o no se si lo puse mal mira :

Código PHP:
Ver original
  1. if(isset($_POST['queryString'])) {
  2.             $queryString = $db->real_escape_string($_POST['queryString']);
  3.            
  4.             // Is the string length greater than 0?
  5.             if(strlen($queryString) >0) {
  6.             $query = $db->query
  7. SELECT
  8.     Hotel,
  9.     Destino,
  10.     Estado,
  11.     Direccion
  12. FROM Hoteles
  13. WHERE
  14.     Hotel  LIKE '%" . $queryString . "%'
  15.     OR  Destino LIKE '%" . $queryString . "%'  
  16.     OR  Estado LIKE '%" . $queryString . "%'
  17. UNION
  18. SELECT
  19.     Hotel,
  20.     Destino,
  21.     Estado,
  22.     Direccion
  23. FROM Pago
  24. WHERE
  25.     Hotel  LIKE '%" . $queryString . "%'
  26.     OR  Destino LIKE '%" . $queryString . "%'  
  27.     OR  Estado LIKE '%" . $queryString . "%'
  #4 (permalink)  
Antiguo 03/04/2013, 20:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema con UNION

Te lo voy a tomar como una distracción fenomenal...
SQL no es PHP, por lo que no puedes embeber el SQL directamente.
No sé si no lo notaste, pero yo separé tu consulta SQL del script PHP para que la vieses bien, y la etiqueté como SQL, no como PHP.
Obviamente eso significa que para usarla debes volver a meter lo que te puse dentro de una cadena de texto... y preferentemente dentro de una variable.

¿No te parece?
Código PHP:
Ver original
  1. if(isset($_POST['queryString']))
  2.     {
  3.     $queryString = $db->real_escape_string($_POST['queryString']);
  4.            
  5.     // Is the string length greater than 0?
  6.     if(strlen($queryString) >0) {
  7.    $qry =  "SELECT
  8.        Hotel,
  9.        Destino,
  10.        Estado,
  11.        Direccion
  12.    FROM Hoteles
  13.    WHERE
  14.        Hotel  LIKE '%" . $queryString . "%'
  15.        OR  Destino LIKE '%" . $queryString . "%'  
  16.        OR  Estado LIKE '%" . $queryString . "%'
  17.    UNION
  18.    SELECT
  19.        Hotel,
  20.        Destino,
  21.        Estado,
  22.        Direccion
  23.    FROM Pago
  24.    WHERE
  25.        Hotel  LIKE '%" . $queryString . "%'
  26.        OR  Destino LIKE '%" . $queryString . "%'  
  27.        OR  Estado LIKE '%" . $queryString . "%'"
  28.     $query = $db->query($qry);
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 03/04/2013, 20:58
 
Fecha de Ingreso: agosto-2008
Mensajes: 43
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Problema con UNION

Muchas gracias nuevamente y perdón por las preguntas tan básicas lo que pasa es que soy nuevo en PHP.

Ya lo puse como me dijiste pero aún no logro hacerlo funcionar no se que estará pasando te pongo el código completo a ver si me puedes ayudar perdón tantas moelstias

Código PHP:
Ver original
  1. $db = new mysqli('xxxx', 'xxxx', 'xxxxx', 'xxxxx');
  2.    
  3.     if(!$db) {
  4.        
  5.         echo 'ERROR: Could not connect to the database.';
  6.                
  7.        
  8.     } else {
  9.        
  10.     if(isset($_POST['queryString']))
  11.     {
  12.     $queryString = $db->real_escape_string($_POST['queryString']);
  13.            
  14.     // Is the string length greater than 0?
  15.     if(strlen($queryString) >0) {
  16.        
  17.    $qry =  "SELECT
  18.        Hotel,
  19.        Destino,
  20.        Estado,
  21.        Direccion
  22.    FROM Hoteles
  23.    WHERE
  24.        Hotel  LIKE '%" . $queryString . "%'
  25.        OR  Destino LIKE '%" . $queryString . "%'  
  26.        OR  Estado LIKE '%" . $queryString . "%'
  27.    UNION
  28.    SELECT
  29.        Hotel,
  30.        Destino,
  31.        Estado,
  32.        Direccion
  33.    FROM Pago
  34.    WHERE
  35.        Hotel  LIKE '%" . $queryString . "%'
  36.        OR  Destino LIKE '%" . $queryString . "%'  
  37.        OR  Estado LIKE '%" . $queryString . "%'";
  38.     $query = $db->query($qry);
  39.            
  40.        
  41.            
  42.            
  43.  
  44.  
  45.                
  46.                  
  47.                
  48.                 if($query) {
  49.                     // While there are results loop through them - fetching an Object.
  50.                    
  51.                     // Store the category id
  52.                     $Destino = 1;  
  53.                     $Destino =  htmlentities ($Destino);       
  54.                     while ($result = $query ->fetch_object() ) {
  55.                         if($result->Destino != $Destino) { // check if the category changed
  56.                    
  57.                         echo '<span class="category">'.htmlentities($result->Destino).'</span>';
  58.                        
  59.                        
  60.                             $Destino = $result->Destino;
  61.                                        
  62.  
  63.                         }
  64.                        
  65.                        
  66.                    
  67.                      
  68.                    
  69.                    
  70.                                    
  71.                            $Hotel = $result->Hotel;
  72.                         if(strlen($name) > 35) {
  73.                             $Hotel = substr($Hotel, 0, 35) . "...";
  74.                         }                      
  75.                        
  76.                
  77.                     $HotelCat = $result->Categoria;
  78.                         if(strlen($name) > 35) {
  79.                             $Hotel = substr($Hotel, 0, 35) . "...";
  80.                         }                      
  81.                    
  82.                    
  83.                     echo '<a href="hotelInfo.php?id='.$result->id.'" class="link">';
  84.                
  85.                     echo '<span class="searchheading">'.htmlentities($Hotel).'</span>';
  86.                    
  87.                         $Direccion = $result->Direccion;
  88.                         if(strlen($Direccion) > 40) {
  89.                             $Direccion = substr($Direccion, 0, 40) . "...";
  90.                         }
  91.                
  92.                     echo '<span>'.htmlentities($result->Direccion).'</span></a>';
  93.                    
  94.                    
  95.                    
  96.                    
  97.                     }
  98.                     echo '<span class="seperator"><a href="http://www.ofertaturistica.info" title="Sitemap">Nada interesante? Mapa de Sitio.</a></span><br class="break" />';
  99.                 } else {
  100.                     echo 'ERROR: There was a problem with the query.';
  101.                 }
  102.             } else {
  103.                 // Dont do anything.
  104.             } // There is a queryString.
  105.         } else {
  106.             echo 'There should be no direct access to this script!';
  107.         }
  108.     }

Etiquetas: union
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:59.