Foros del Web » Programando para Internet » PHP »

Problema con consulta en PHP

Estas en el tema de Problema con consulta en PHP en el foro de PHP en Foros del Web. Buenos dìas, Tengo una aplicacion web desarrollada en PHP y me encuentro en un callejon sin salida. El problema surge cuando quiero sacar la fecha ...
  #1 (permalink)  
Antiguo 10/06/2013, 05:12
 
Fecha de Ingreso: octubre-2012
Ubicación: Pozuelo de Alarcón
Mensajes: 67
Antigüedad: 11 años, 6 meses
Puntos: 1
Problema con consulta en PHP

Buenos dìas,

Tengo una aplicacion web desarrollada en PHP y me encuentro en un callejon sin salida.

El problema surge cuando quiero sacar la fecha mas alta de una serie de datos de la bbdd. La sentencia sql funciona perfectamente en la base de datos pero a la hora de ejecutarla desde la aplicacion me devuelve vacia.

Me explico mejor.

Tengo una bbdd hecha en Access, y desde la aplicacion realizo una serie de consultas.
En este caso la consulta es la siguiente:
Código PHP:
Ver original
  1. public function get_crwb_request_date()
  2.         {
  3.             //$query = 'SELECT request_date FROM transport WHERE (request_date = (SELECT MAX(request_date) FROM transport WHERE (transport_type LIKE "crwb*")))';
  4.             $query = 'SELECT Max(transport.request_date) FROM transport WHERE (((transport.request_date) Is Not Null) AND ((transport.transport_ref) Like "CRWB*"))';
  5.             try
  6.             {
  7.                 $result = $this->dbh->prepare($query);
  8.                 $result->execute();
  9.                 $rows = NULL;
  10.                 if ($result)
  11.                 {
  12.                     $rows = $result->fetchAll(PDO::FETCH_ASSOC);
  13.                     $rows = $this->filter_rows($rows);
  14.                 }
  15.                 return $rows;
  16.             }
  17.             catch (PDOException $e)
  18.             {
  19.                 $this->fatal_error($e->getMessage());
  20.             }
  21.            
  22.         }

En la bbdd creo una consulta y pongo la misma sentencia y me devuelve el valor correcto, pero cuando la ejecuto desde la aplicación siempre me devuelve vació.

Tengo comentada otra linea en el código que es la misma sentencia pero de diferente forma, y tampoco me devuelve nada en la aplicación.

Alguien sabe porque puede ser?

Muchas gracias.

Un saludo
  #2 (permalink)  
Antiguo 10/06/2013, 05:35
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problema con consulta en PHP

Imprime la consulta con echo por pantalla, luego copiar y pegar y pruebala de nuevo en el editor SQL.
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 10/06/2013, 09:21
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 7 meses
Puntos: 56
Respuesta: Problema con consulta en PHP

puedes usar ORDER BY transport.request_date DESC en lugar de MAX
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #4 (permalink)  
Antiguo 10/06/2013, 09:54
 
Fecha de Ingreso: abril-2013
Ubicación: Lima
Mensajes: 83
Antigüedad: 11 años
Puntos: 1
Respuesta: Problema con consulta en PHP

usa order by 1 desc limit 1
  #5 (permalink)  
Antiguo 11/06/2013, 01:54
 
Fecha de Ingreso: octubre-2012
Ubicación: Pozuelo de Alarcón
Mensajes: 67
Antigüedad: 11 años, 6 meses
Puntos: 1
Respuesta: Problema con consulta en PHP

Muchas gracias por sus respuestas,

Ya probe a imprimir la query para copiar y pegarla en el editor de sql (en este caso access) y funciona bien, pero en la aplicacion sigue sin funcionar.

Tambien he probado a las formas que me habeis comentado pero ninguna me funciona, todas me devuelve un array vacio. Puede que haga algo mal a la hora de ejecutar la query???
  #6 (permalink)  
Antiguo 11/06/2013, 10:12
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 7 meses
Puntos: 56
Respuesta: Problema con consulta en PHP

pega el código a ver como ha quedado
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #7 (permalink)  
Antiguo 17/06/2013, 02:15
 
Fecha de Ingreso: octubre-2012
Ubicación: Pozuelo de Alarcón
Mensajes: 67
Antigüedad: 11 años, 6 meses
Puntos: 1
Respuesta: Problema con consulta en PHP

Buenas,

Te pongo el codigo pero ya adelanto que es muy similar al que ya puse en su momento.

Funcion con la query:

Código PHP:
Ver original
  1. public function get_crwb_request_date()
  2.         {
  3.             //$query = 'SELECT request_date FROM transport WHERE (request_date = (SELECT MAX(request_date) FROM transport WHERE (transport_type LIKE "crwb*")))';
  4.             $query = 'SELECT transport.request_date FROM transport WHERE (((transport.request_date) Is Not Null) AND ((transport.transport_ref) Like "CRWB*")) ORDER BY transport.request_date DESC';
  5.             try
  6.             {
  7.                 $result = $this->dbh->prepare($query);
  8.                 $result->execute();
  9.                 $rows = NULL;
  10.                 print_r($query);
  11.                 if ($result)
  12.                 {
  13.                     $rows = $result->fetchAll(PDO::FETCH_ASSOC);
  14.                     print_r($rows);
  15.                     $rows = $this->filter_rows($rows);
  16.                 }
  17.                 return $rows;
  18.             }
  19.             catch (PDOException $e)
  20.             {
  21.                 $this->fatal_error($e->getMessage());
  22.             }
  23.            
  24.         }


Siguo sin sacar la solcuion, podria ser algo de nomenclatura?

Muchas gracias

Un saludo
  #8 (permalink)  
Antiguo 17/06/2013, 04:28
 
Fecha de Ingreso: octubre-2012
Ubicación: Pozuelo de Alarcón
Mensajes: 67
Antigüedad: 11 años, 6 meses
Puntos: 1
Respuesta: Problema con consulta en PHP

Buenas de nuevo,

Encontre a priori el problema, pero no he llegado a resolverlo entero.

Para que la query devuelva algo es importante saber que la query no puede tener comillas en medio por lo que deberemos sustituirlo por \' o \" en el caso de cada uno.

Ademas me sigue sin dar resultado con la query esta:

$query = 'SELECT request_date FROM transport WHERE (((request_date) Is Not Null) AND ((.transport_ref) Like \'Loreto*\')) ORDER BY request_date DESC';

Por lo que veo es que no reconoce * como pasaba con las comillas. Alguien sabe como poner que un campo empiece por unos caracteres(en este caso loreto: ((.transport_ref) Like \'Loreto*\'))).

Muchas gracias
Un saludo
  #9 (permalink)  
Antiguo 17/06/2013, 04:37
 
Fecha de Ingreso: octubre-2011
Mensajes: 113
Antigüedad: 12 años, 6 meses
Puntos: 5
Respuesta: Problema con consulta en PHP

Cita:
Iniciado por taboacar Ver Mensaje
Buenos dìas,

Tengo una aplicacion web desarrollada en PHP y me encuentro en un callejon sin salida.

El problema surge cuando quiero sacar la fecha mas alta de una serie de datos de la bbdd. La sentencia sql funciona perfectamente en la base de datos pero a la hora de ejecutarla desde la aplicacion me devuelve vacia.

Me explico mejor.

Tengo una bbdd hecha en Access, y desde la aplicacion realizo una serie de consultas.
En este caso la consulta es la siguiente:
Código PHP:
Ver original
  1. public function get_crwb_request_date()
  2.         {
  3.             //$query = 'SELECT request_date FROM transport WHERE (request_date = (SELECT MAX(request_date) FROM transport WHERE (transport_type LIKE "crwb*")))';
  4.             $query = 'SELECT Max(transport.request_date) FROM transport WHERE (((transport.request_date) Is Not Null) AND ((transport.transport_ref) Like "CRWB*"))';
  5.             try
  6.             {
  7.                 $result = $this->dbh->prepare($query);
  8.                 $result->execute();
  9.                 $rows = NULL;
  10.                 if ($result)
  11.                 {
  12.                     $rows = $result->fetchAll(PDO::FETCH_ASSOC);
  13.                     $rows = $this->filter_rows($rows);
  14.                 }
  15.                 return $rows;
  16.             }
  17.             catch (PDOException $e)
  18.             {
  19.                 $this->fatal_error($e->getMessage());
  20.             }
  21.            
  22.         }

En la bbdd creo una consulta y pongo la misma sentencia y me devuelve el valor correcto, pero cuando la ejecuto desde la aplicación siempre me devuelve vació.

Tengo comentada otra linea en el código que es la misma sentencia pero de diferente forma, y tampoco me devuelve nada en la aplicación.

Alguien sabe porque puede ser?

Muchas gracias.

Un saludo
mmm MAX es para datos numéricos y no se que formato tienes en el campo fecha de tu BBDD.

Si está en formato date o timestamp, o incluso un VARCHAR (haciendo debidamente la conversión a timestamp) puedes o deberias usar las funciones SQL para fecha.

SELECT * FROM tu_tabla ORDER BY campo_tu_fecha(en formato timestamp)
  #10 (permalink)  
Antiguo 17/06/2013, 04:41
 
Fecha de Ingreso: octubre-2011
Mensajes: 113
Antigüedad: 12 años, 6 meses
Puntos: 5
Respuesta: Problema con consulta en PHP

Cita:
Iniciado por taboacar Ver Mensaje
Buenos dìas,

Tengo una aplicacion web desarrollada en PHP y me encuentro en un callejon sin salida.

El problema surge cuando quiero sacar la fecha mas alta de una serie de datos de la bbdd. La sentencia sql funciona perfectamente en la base de datos pero a la hora de ejecutarla desde la aplicacion me devuelve vacia.

Me explico mejor.

Tengo una bbdd hecha en Access, y desde la aplicacion realizo una serie de consultas.
En este caso la consulta es la siguiente:
Código PHP:
Ver original
  1. public function get_crwb_request_date()
  2.         {
  3.             //$query = 'SELECT request_date FROM transport WHERE (request_date = (SELECT MAX(request_date) FROM transport WHERE (transport_type LIKE "crwb*")))';
  4.             $query = 'SELECT Max(transport.request_date) FROM transport WHERE (((transport.request_date) Is Not Null) AND ((transport.transport_ref) Like "CRWB*"))';
  5.             try
  6.             {
  7.                 $result = $this->dbh->prepare($query);
  8.                 $result->execute();
  9.                 $rows = NULL;
  10.                 if ($result)
  11.                 {
  12.                     $rows = $result->fetchAll(PDO::FETCH_ASSOC);
  13.                     $rows = $this->filter_rows($rows);
  14.                 }
  15.                 return $rows;
  16.             }
  17.             catch (PDOException $e)
  18.             {
  19.                 $this->fatal_error($e->getMessage());
  20.             }
  21.            
  22.         }

En la bbdd creo una consulta y pongo la misma sentencia y me devuelve el valor correcto, pero cuando la ejecuto desde la aplicación siempre me devuelve vació.

Tengo comentada otra linea en el código que es la misma sentencia pero de diferente forma, y tampoco me devuelve nada en la aplicación.

Alguien sabe porque puede ser?

Muchas gracias.

Un saludo
mmm MAX es para datos numéricos y no se que formato tienes en el campo fecha de tu BBDD.

Si está en formato date o timestamp, o incluso un VARCHAR (haciendo debidamente la conversión a timestamp) puedes o deberias usar las funciones SQL para fecha.

SELECT * FROM tu_tabla ORDER BY campo_tu_fecha(en formato timestamp)

dichosas comillas ejejeejejej ,,,,

no te preocupes a todos nos pasa. Intenta formar la SQL (si ves que te lias) con comillas dobles y cuando llegues al comodin poner;

$sql= " SELECT * --------------------- WHERE campo =' comodin*' ";
  #11 (permalink)  
Antiguo 17/06/2013, 04:57
 
Fecha de Ingreso: octubre-2012
Ubicación: Pozuelo de Alarcón
Mensajes: 67
Antigüedad: 11 años, 6 meses
Puntos: 1
Respuesta: Problema con consulta en PHP

Muchas gracias,

El problema que tengo ahora es con el * que no me lo reconoce, también he usado % que según he leído es lo mismo. Pero probando diferentes querys he comprobado que el resultado no siempre es igual.

Alguien sabe como podría poner el * o en su defecto el %? que diferencia hay entre los dos para access 2010?

Muchas gracias
Un saludo
  #12 (permalink)  
Antiguo 17/06/2013, 05:11
 
Fecha de Ingreso: octubre-2011
Mensajes: 113
Antigüedad: 12 años, 6 meses
Puntos: 5
Respuesta: Problema con consulta en PHP

Cita:
Iniciado por taboacar Ver Mensaje
Muchas gracias,

El problema que tengo ahora es con el * que no me lo reconoce, también he usado % que según he leído es lo mismo. Pero probando diferentes querys he comprobado que el resultado no siempre es igual.

Alguien sabe como podría poner el * o en su defecto el %? que diferencia hay entre los dos para access 2010?

Muchas gracias
Un saludo
prueba a usar en vez de like el '='

field='lorenzo%'
  #13 (permalink)  
Antiguo 18/06/2013, 01:59
 
Fecha de Ingreso: octubre-2012
Ubicación: Pozuelo de Alarcón
Mensajes: 67
Antigüedad: 11 años, 6 meses
Puntos: 1
Respuesta: Problema con consulta en PHP

Buenas,

Gracias, he probado como me dijiste pero sigue dando el mismo problema!el like me lo reconoce bien el problema sigue siendo el * o el % que la verdad no se cual es la diferencia( si realmente existe la diferencia).

Seguiré probando a ver si consigo resolverlo y os cuento como va la cosa.

Muchas gracias!

Etiquetas: select, sql
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 15:26.