Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Faltan argumentos en consulta.

Estas en el tema de Faltan argumentos en consulta. en el foro de Mysql en Foros del Web. Hola a todos, Alguien me podría decir xq no me funciona esta consulta en mi web php, porque la consulta si que me funciona en ...
  #1 (permalink)  
Antiguo 18/04/2012, 11:23
 
Fecha de Ingreso: marzo-2012
Mensajes: 27
Antigüedad: 12 años, 1 mes
Puntos: 0
Faltan argumentos en consulta.

Hola a todos,

Alguien me podría decir xq no me funciona esta consulta en mi web php, porque la consulta si que me funciona en el asistente que uso NAvicat.
Pero en el navegador me aparece esto.
Warning: sprintf() [function.sprintf]: Too few arguments in...
¿Como puedo utilizar las DATE_FORMAT y TIME_FORMAT para que no me de este error?.

Gracias
  #2 (permalink)  
Antiguo 18/04/2012, 12:21
Avatar de latinpower  
Fecha de Ingreso: septiembre-2010
Ubicación: Canelones
Mensajes: 116
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: Faltan argumentos en consulta.

¿Podes pasar la consulta mysql y como la empleas en php?
  #3 (permalink)  
Antiguo 18/04/2012, 13:49
 
Fecha de Ingreso: marzo-2012
Mensajes: 27
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Faltan argumentos en consulta.

Hola latinpower

Código PHP:
//Obtener Dia y Hora de una jornada.
function DiaHoraJornada($identificador)
{
    global 
$database_Miequipo$Miequipo;
    
mysql_select_db($database_Miequipo$Miequipo);
    
$query_DiaHora sprintf("SELECT DATE_FORMAT(strDia, '%d-%m-%Y') as Dia, TIME_FORMAT(strHora,'%H:%i') as Hora FROM tbljornada WHERE tbljornada.idJornada = %s"
                            
GetSQLValueString($identificador"int"));
    
$Dia_Hora mysql_query($query_DiaHora$Miequipo) or die(mysql_error());
    
$row_Dia_Hora mysql_fetch_assoc($Dia_Hora);    
    
    return 
$row_Dia_Hora;
    
mysql_free_result($Dia_Hora);

Aqui lo llamo, es un chivato para ver como me lo muestra:
Código PHP:
$cuando=DiaHoraJornada($_SESSION['idJornada']);
echo 
$cuando['Dia'];
echo 
$cuando['Hora'];
exit; 
Me da que me pide argumentos por los % dentro de DATE_FORMAT, ya que si pongo GET_FORMAT(TIME,'EUR') en vez de '%d-%m-%Y' me sale bien, pero no quiero separado por puntos si no guión y en la hora no quiero los segundos y no he visto otra forma.
La cuestión es no tener que hacer funciones para colocarlo como quiero si ya puedo hacerlo en la consulta.
GRacias.
  #4 (permalink)  
Antiguo 18/04/2012, 14:16
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Faltan argumentos en consulta.

Creo que llevas razón y que el problema es el uso de % tanto para los parámetros de las funciones de formato de DATE_FORMAT Y TIME_FORMAT como para la función de formato de PHP sprintf. Tienes varias opciones, pero yo, en este caso, quitaría la de PHP, sprintf, y usaría
$query_DiaHora = "SELECT DATE_FORMAT(strDia, '%d-%m-%Y') as Dia, TIME_FORMAT(strHora,'%H:%i') as Hora FROM tbljornada WHERE tbljornada.idJornada = $identificador";

Otras opciones pasarían por usar DAY(strDia), MONTH(strDia) y YEAR(strDia) y unirlos mediante CONCAT. No lo he probado, pero la idea es esta:
SELECT CONCAT(DAY(strDia), '-',MONTH(strDia),'-',YEAR(strDia)) fecha
  #5 (permalink)  
Antiguo 18/04/2012, 15:28
 
Fecha de Ingreso: marzo-2012
Mensajes: 27
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Faltan argumentos en consulta.

Gracias

En este caso creo que prescindire de sprintf, aunque es menos seguro al no poder usar el GetSQLValueString pero bueno.
  #6 (permalink)  
Antiguo 18/04/2012, 16:02
 
Fecha de Ingreso: marzo-2012
Mensajes: 27
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Faltan argumentos en consulta.

Hola otra vez.
Por si alguien consulta este Hilo, he encontrado la solución correcta.
Poder ustilizar sprintf para hacer el GetSQLValueString y usar % que no son comodines de variables.

El tema es que para escapar un % y que no lo confunda se han de poner %%.

Código PHP:
$query_DiaHora =sprintf("SELECT DATE_FORMAT(strDia, '%%d-%%m-%%Y') as Dia, TIME_FORMAT(strHora,'%%H:%%i') as Hora FROM tbljornada WHERE tbljornada.idJornada = %s",
                            
GetSQLValueString($identificador"int")); 
Adeu.

Etiquetas: argumentos, php
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 18:54.