Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/08/2012, 04:48
pcid
Usuario no validado
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 16 años
Puntos: 16
Respuesta: Sentencia MySQL usando rangos

En PHP el operador para poner la condición de si un valor es igual a otro es "==", no "=".

En MySQL el operador de la condición de igualdad para el WHERE de un SELECT si que es "=".

No tengo claro si el tipo de campo de la tabla no te va a poner problemas por utilizar apostrofes en los que son de tipo numérico. Por hábito siempre pongo los valores con los formatos que conozco como "más correctos".

Para agregar condiciones a un "select" en función de si se recibieron o no valores para hacer los filtros en la consulta te pongo un ejemplo en PHP

Código PHP:
Ver original
  1. <?php
  2.  
  3. // Función para agregar apóstrofes.
  4. // OJO: Puede que tengas que mejorarla para que devuelva "NULL" cuando $valor este vacía.
  5. function scm($valor)
  6. {
  7.     return '\''.$valor.'\'';
  8. }
  9.  
  10. // Función para agregar condiciones al pedazo del WHERE
  11. function addToWhere(&$xwhere, $condicion)
  12. {
  13.     if ($xwhere == '') $xwhere = ' where ';
  14.     else $xwhere .= ' and ';
  15.     $xwhere .= $condicion;
  16.    
  17. }
  18.  
  19. // Variables donde se meten los valores de los filtros que se pueden llegar a recibir
  20. $filtroDescripcion  = 'FILTRO 1';
  21. $filtroID           = '1';
  22.  
  23. // Parte principal del SELECT
  24. $qry = 'select Id_Item, Descripcion from TABLA';
  25.  
  26. // Inicialización de variable para poner el WHERE
  27. $xwhere = '';
  28.  
  29.  
  30. // Por cada filtro posible, se agrega una condicón y si procede, se agrega al WHERE
  31. if ($filtroID != '')  addToWhere ($xwhere, 'Id_Item = '.$filtroID);
  32. if ($filtroDescripcion != '')  addToWhere ($xwhere, 'Descripcion = '.scm($filtroDescripcion));
  33.  
  34. // Se concatena el WHERE a la parte principal del SELECT
  35. // OJO: SI no se recibieron filtros, el SELECT ira sin WHERE.
  36. $qry .= $xwhere.';';
  37.  
  38. // Para verificar que la sentencia es correcta, se muestra en la página,
  39. // se copia y se prueba desde phpMyAdmin o lo que sea que utilices para hacer consultas directamente en la base de datos.
  40. echo $qry;
  41. return;
  42.  
  43. ?>