Foros del Web » Programando para Internet » PHP »

Problema con consulta

Estas en el tema de Problema con consulta en el foro de PHP en Foros del Web. ¿Qué hago mal? $howmanydates = mysql_db_query("$mysql_database", "SELECT * FROM Media WHERE Type = 'Audio' and Date >= '$yearnow-$j-1' and Date < '$yearnow-$j2-1'"); $countposts = mysql_num_rows($howmanydates); ...
  #1 (permalink)  
Antiguo 23/02/2009, 13:03
 
Fecha de Ingreso: abril-2007
Mensajes: 213
Antigüedad: 17 años
Puntos: 0
Problema con consulta

¿Qué hago mal?

$howmanydates = mysql_db_query("$mysql_database", "SELECT * FROM Media WHERE Type = 'Audio' and Date >= '$yearnow-$j-1' and Date < '$yearnow-$j2-1'");

$countposts = mysql_num_rows($howmanydates);

Eso falla, (aunque desde el phpmyadmin no), pero esta consulta funciona:

$howmanydates = mysql_db_query("$mysql_database", "SELECT * FROM `$rowm[Ref]` WHERE `Date` >= '$yearnow-$j-1' and `Date` < '$yearnow-$j2-1'");

$countposts = mysql_num_rows($howmanydates);
  #2 (permalink)  
Antiguo 23/02/2009, 13:16
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Problema con consulta

observa que Date es una de las palabras reservadas (existe como función), por lo que debes escribirla entre acentos `Date` cuando no se trate de la función, sino del nombre del campo.
  #3 (permalink)  
Antiguo 23/02/2009, 13:33
 
Fecha de Ingreso: abril-2007
Mensajes: 213
Antigüedad: 17 años
Puntos: 0
gracias, a ver si es eso, probare ;)

Que va, ni pa dios, no es eso, no se porque falla si en phpmyadmin funciona... :@

Última edición por GatorV; 23/02/2009 a las 15:22
  #4 (permalink)  
Antiguo 23/02/2009, 13:42
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Problema con consulta

Dinos exactamente qué escribes en el PHPMyAdmin, porque no creo que escribas las variables. Puede tratarse de un problema PHP. No obstante prueba esto antes:
SELECT * FROM Media FROM Media WHERE Type = 'Audio' and (`Date` >= '$yearnow-$j-1' and `Date` < '$yearnow-$j2-1'"));

Entiendo que Date es el nombre de un campo, no un tipo de campo, ni una función.
También podría tratarse de un problema con el uso de días con uno o dos dígitos, es decir 01 en lugar de 1, pero si dices que te funciona...
  #5 (permalink)  
Antiguo 23/02/2009, 13:44
 
Fecha de Ingreso: abril-2007
Mensajes: 213
Antigüedad: 17 años
Puntos: 0
Respuesta: Problema con consulta

Probare con los parantesis, ahora no tengo tiempo ya os dire si funciona así.

En phpmyadmin pongo lo mismo pero sustituyendo las variables por unas cualquiera, no obstante

$howmanydates = mysql_db_query("$mysql_database", "SELECT * FROM Media WHERE Type = 'Audio' and Date >= '$yearnow-$j-1' and Date < '$yearnow-$j2-1'");

funciona y las variables no cambian.
  #6 (permalink)  
Antiguo 23/02/2009, 13:54
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Problema con consulta

He editado y borrado lo anterior (que tenía cierto contenido PHP) para no mezclar las cosas y tampoco incomodar a nuestros moderadores.
Una consulta como esta:
SELECT * FROM Media WHERE `Type` = 'Audio' and (`Date` >= '2009-01-015' and `Date` < '2009-02-01");
debería funcionar

De todas formas, dinos cómo llegan los datos de $yearnow y $j. ¿Es el año con 4 dígitos, y $j es el mes con uno o dos dígitos? Con esa respuesta podremos ayudarte a generar mediante str_to_date() de MySQL una consulta en que no sea necesario usar los 0 delante de mes y día.

Última edición por jurena; 23/02/2009 a las 14:47
  #7 (permalink)  
Antiguo 24/02/2009, 09:31
 
Fecha de Ingreso: abril-2007
Mensajes: 213
Antigüedad: 17 años
Puntos: 0
$yearnow y $j no deberian ser problemas, porque como os digo tengo una consulta exacta pero que en vez de SELECT * FROM Media WHERE `Type` = 'Audio' dice SELECT * FROM News y funciona, luego el problema creo que es de las tildes, parentesis y de todo ese lio.

$yearnow es el año y tiene logicamente los 4 digitos, el problema igual si es $j que es el mes y viene dado por numeros pero sin los ceros delante, 1 y no 01. Pruebo ahora mismo lo de los parentesis y si no va os aviso.

Si falla el problema que seria de poner los meses sin ceros delante?

he probado y tambien falla, seran los dias?

Joder, si no funciona ni esto:

SELECT * FROM Media WHERE Type = Audio

Es que no se que le pasa a esa linea parece que esta maldita, os pongo el codigo con el mysql_db_query:

Código HTML:
$howmanydates = mysql_db_query("$mysql_database", "SELECT * FROM `Media` WHERE Type = Audio `Date` >= '$yearnow-$j-1' and `Date` < '$yearnow-$j2-1'");
Código HTML:
$howmanydates = mysql_db_query("$mysql_database", "SELECT * FROM `Media` WHERE Type = Audio and `Date` >= '$yearnow-$j-1' and `Date` < '$yearnow2-1-1'");

Última edición por GatorV; 24/02/2009 a las 10:58
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 19:25.