Foros del Web » Programando para Internet » PHP »

Mysql query no coge variable

Estas en el tema de Mysql query no coge variable en el foro de PHP en Foros del Web. Hola, No entiendo nada, Ya sé que debo de pasar a mysqli pero tengo cientos de páginas y no tengo tiempo para ponerme a estudiarlo, ...
  #1 (permalink)  
Antiguo 13/12/2012, 06:56
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 15 años, 5 meses
Puntos: 6
Mysql query no coge variable

Hola,
No entiendo nada,
Ya sé que debo de pasar a mysqli pero tengo cientos de páginas y no tengo tiempo para ponerme a estudiarlo, y como funciona todavía.

Tengo este script:
Código PHP:
        <?php
if (isset($_POST['enviar'])) {
$propiedad = @mysql_real_escape_string($_POST['propiedad']); 
echo 
"$propiedad";
$result mysql_query ("SELECT DATE_FORMAT(llegada, '%e %b %Y') as lleg,
 DATE_FORMAT(salida, '%e %b %Y') as sal,tiporeserva, propiedad, 
TO_DAYS('$salida') - TO_DAYS('$llegada') as dias 
from bookings where (propiedad = '$propiedad')
AND (('$llegada' BETWEEN llegada AND date_sub(salida, interval +1 day)) 
or ('$salida' BETWEEN date_sub(llegada, interval -1 day)
 AND salida) or (llegada <= '$llegada' 
AND salida >= '$salida') or (llegada >= '$llegada' 
AND salida <= '$salida'))"
$dbh);
if (
$row mysql_fetch_object($result)) {
    echo 
"no disponible";

echo 
"$propiedad";

?>
el variable $propiedad la obtengo por post de un formulario, es más al hacer un echo imprime perfectamente el valor, pero en el query no coge el valor de la variable.
Si declaro la variable $propiedad = "valorvariable"; funciona perfectamente el query, pero por post no lo coge....

Si añado un die en el query me sale este error: Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in
Gracias
  #2 (permalink)  
Antiguo 13/12/2012, 07:11
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Mysql query no coge variable

Código PHP:
Ver original
  1. $result = mysql_query ("SELECT DATE_FORMAT(llegada, '%e %b %Y') as lleg, ".
  2.            "             DATE_FORMAT(salida, '%e %b %Y') as sal,".
  3.            "             tiporeserva,".
  4.            "             propiedad,".
  5.            "             TO_DAYS('".$salida."') - TO_DAYS('".$llegada."') as dias ".
  6.            "from bookings ".
  7.            "where (propiedad = '".$propiedad."') ".
  8.            "     AND (('".$llegada."' BETWEEN llegada AND date_sub(salida, interval +1 day)) ".
  9.            "     or ('".$salida."' BETWEEN date_sub(llegada, interval -1 day) ".
  10.            "           AND salida) ".
  11.            "     or (llegada <= '".$llegada."' ".
  12.            "            AND salida >= '".$salida."') or (llegada >= '".$llegada."' ".
  13.            "            AND salida <= '".$salida."'))", $dbh);

Intenta esto
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 13/12/2012 a las 07:21
  #3 (permalink)  
Antiguo 13/12/2012, 07:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Mysql query no coge variable

1. Imprime la consulta antes de ejecutarla y observa si está bien escrita
2. Imprime el valor de mysql_error() después del fallo para saber más
3. Quita la arroba @ de todo lo que ejecutes, eso oculta los errores
4. Lo que resulte nos dices, no es sencillo adivinar, tu sabes
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 13/12/2012, 07:19
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 15 años, 5 meses
Puntos: 6
Respuesta: Mysql query no coge variable

Cita:
Iniciado por quimfv Ver Mensaje
Código PHP:
Ver original
  1. $result = mysql_query ("SELECT DATE_FORMAT(llegada, '%e %b %Y') as lleg, ".
  2.                                       "             DATE_FORMAT(salida, '%e %b %Y') as sal,".
  3.                                       "             tiporeserva,".
  4.                                       "             propiedad,".
  5.                                       "             TO_DAYS('".$salida."') - TO_DAYS('".$llegada."') as dias ".
  6.                                       "from bookings ".
  7.                                       "where (propiedad = '".$propiedad."') ".
  8.                                       "     AND (('".$llegada."' BETWEEN llegada AND date_sub(salida, interval +1 day)) ".
  9.                                       "     or ('$salida' BETWEEN date_sub(llegada, interval -1 day) ".
  10.                                       "           AND salida) ".
  11.                                       "     or (llegada <= '".$llegada."' ".
  12.                                       "            AND salida >= '".$salida."') or (llegada >= '".$llegada."' ".
  13.                                       "            AND salida <= '".$salida."'))", $dbh);

Intenta esto
Gracias, nada, igual, sin resultado
  #5 (permalink)  
Antiguo 13/12/2012, 07:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Mysql query no coge variable

Cita:
Iniciado por pateketrueke Ver Mensaje
1. Imprime la consulta antes de ejecutarla y observa si está bien escrita
2. Imprime el valor de mysql_error() después del fallo para saber más
3. Quita la arroba @ de todo lo que ejecutes, eso oculta los errores
4. Lo que resulte nos dices, no es sencillo adivinar, tu sabes
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 13/12/2012, 07:25
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 15 años, 5 meses
Puntos: 6
Respuesta: Mysql query no coge variable

Cita:
Iniciado por pateketrueke Ver Mensaje
1. Imprime la consulta antes de ejecutarla y observa si está bien escrita
2. Imprime el valor de mysql_error() después del fallo para saber más
3. Quita la arroba @ de todo lo que ejecutes, eso oculta los errores
4. Lo que resulte nos dices, no es sencillo adivinar, tu sabes
Lo siento pero no sé como o no entiendo muy bien,
1. la consulta la ha ejecutado en phpmyadmin y esta bien, asimismo si en el query cambio el variabla $propiedad por un valor tambien funciona el query.
2. si te refieres a hacer un or die(mysql_error()) en la consulta me sale error
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in
3. He probado con $propiedad = ($_POST['propiedad']); y tampoco va
Gracias
  #7 (permalink)  
Antiguo 13/12/2012, 07:27
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Mysql query no coge variable

Cita:
1. Imprime la consulta antes de ejecutarla y observa si está bien escrita
Código PHP:
Ver original
  1. echo "SELECT DATE_FORMAT(llegada, '%e %b %Y') as lleg, ".
  2.            "             DATE_FORMAT(salida, '%e %b %Y') as sal,".
  3.            "             tiporeserva,".
  4.            "             propiedad,".
  5.            "             TO_DAYS('".$salida."') - TO_DAYS('".$llegada."') as dias ".
  6.            "from bookings ".
  7.            "where (propiedad = '".$propiedad."') ".
  8.            "     AND (('".$llegada."' BETWEEN llegada AND date_sub(salida, interval +1 day)) ".
  9.            "     or ('".$salida."' BETWEEN date_sub(llegada, interval -1 day) ".
  10.            "           AND salida) ".
  11.            "     or (llegada <= '".$llegada."' ".
  12.            "            AND salida >= '".$salida."') or (llegada >= '".$llegada."' ".
  13.            "            AND salida <= '".$salida."'))";

o
Código PHP:
Ver original
  1. echo "SELECT DATE_FORMAT(llegada, '%e %b %Y') as lleg,
  2. DATE_FORMAT(salida, '%e %b %Y') as sal,tiporeserva, propiedad,
  3. TO_DAYS('$salida') - TO_DAYS('$llegada') as dias
  4. from bookings where (propiedad = '$propiedad')
  5. AND (('$llegada' BETWEEN llegada AND date_sub(salida, interval +1 day))
  6. or ('$salida' BETWEEN date_sub(llegada, interval -1 day)
  7. AND salida) or (llegada <= '$llegada'
  8. AND salida >= '$salida') or (llegada >= '$llegada'
  9. AND salida <= '$salida'))";

como prefieras.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #8 (permalink)  
Antiguo 13/12/2012, 07:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Mysql query no coge variable

A ver, con calma, ¿en que parte ejecutas el mysql_error()?

Porque debe ser antes de mysql_fetch_object() pero después de mysql_query(), ¿eso lo haces bien?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 13/12/2012, 07:28
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 10 meses
Puntos: 606
Respuesta: Mysql query no coge variable

Cita:
Iniciado por helenp Ver Mensaje
Lo siento pero no sé como o no entiendo muy bien,
1. la consulta la ha ejecutado en phpmyadmin y esta bien, asimismo si en el query cambio el variabla $propiedad por un valor tambien funciona el query.
2. si te refieres a hacer un or die(mysql_error()) en la consulta me sale error
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in
3. He probado con $propiedad = ($_POST['propiedad']); y tampoco va
Gracias
Con el punto 1 se refiere a que generes la consulta SQL en una variable y muestres la variable con un echo (por ejemplo). Quizás tu cuando pones la consulta en phpmyadmin y pones los valores a las variables de forma manual haces "algo" que no está en la consulta que construyes en el código.
__________________
Aviso: No se resuelven dudas por MP!
  #10 (permalink)  
Antiguo 13/12/2012, 07:32
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 15 años, 5 meses
Puntos: 6
Respuesta: Mysql query no coge variable

Cita:
Iniciado por quimfv Ver Mensaje
Código PHP:
Ver original
  1. echo "SELECT DATE_FORMAT(llegada, '%e %b %Y') as lleg, ".
  2.            "             DATE_FORMAT(salida, '%e %b %Y') as sal,".
  3.            "             tiporeserva,".
  4.            "             propiedad,".
  5.            "             TO_DAYS('".$salida."') - TO_DAYS('".$llegada."') as dias ".
  6.            "from bookings ".
  7.            "where (propiedad = '".$propiedad."') ".
  8.            "     AND (('".$llegada."' BETWEEN llegada AND date_sub(salida, interval +1 day)) ".
  9.            "     or ('".$salida."' BETWEEN date_sub(llegada, interval -1 day) ".
  10.            "           AND salida) ".
  11.            "     or (llegada <= '".$llegada."' ".
  12.            "            AND salida >= '".$salida."') or (llegada >= '".$llegada."' ".
  13.            "            AND salida <= '".$salida."'))";

o
Código PHP:
Ver original
  1. echo "SELECT DATE_FORMAT(llegada, '%e %b %Y') as lleg,
  2. DATE_FORMAT(salida, '%e %b %Y') as sal,tiporeserva, propiedad,
  3. TO_DAYS('$salida') - TO_DAYS('$llegada') as dias
  4. from bookings where (propiedad = '$propiedad')
  5. AND (('$llegada' BETWEEN llegada AND date_sub(salida, interval +1 day))
  6. or ('$salida' BETWEEN date_sub(llegada, interval -1 day)
  7. AND salida) or (llegada <= '$llegada'
  8. AND salida >= '$salida') or (llegada >= '$llegada'
  9. AND salida <= '$salida'))";

como prefieras.
Gracias,
me imprime:
SELECT DATE_FORMAT(llegada, '%e %b %Y') as lleg, DATE_FORMAT(salida, '%e %b %Y') as sal, tiporeserva, propiedad, TO_DAYS('2012-12-09') - TO_DAYS('2012-12-01') as dias from bookings where (propiedad = 'Casa Test') AND (('2012-12-01' BETWEEN llegada AND date_sub(salida, interval +1 day)) or ('2012-12-09' BETWEEN date_sub(llegada, interval -1 day) AND salida) or (llegada <= '2012-12-01' AND salida >= '2012-12-09') or (llegada >= '2012-12-01' AND salida <= '2012-12-09'))
Me da el valor????
  #11 (permalink)  
Antiguo 13/12/2012, 07:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Mysql query no coge variable

Ahora copia y pega la consulta que imprimiste directamente en phpMyAdmin, ¿funciona?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 13/12/2012, 07:37
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 15 años, 5 meses
Puntos: 6
Respuesta: Mysql query no coge variable

Cita:
Iniciado por pateketrueke Ver Mensaje
A ver, con calma, ¿en que parte ejecutas el mysql_error()?

Porque debe ser antes de mysql_fetch_object() pero después de mysql_query(), ¿eso lo haces bien?
Si hago: if (!$result)
{
die(mysql_error());
}
despues del query pero antes del fetch_object
no me sale error pero tampoco ningun resultado
  #13 (permalink)  
Antiguo 13/12/2012, 07:40
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Mysql query no coge variable

Y si ahora copias y pegas en el phpmyadmin sigue funcionando?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #14 (permalink)  
Antiguo 13/12/2012, 07:40
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 15 años, 5 meses
Puntos: 6
Respuesta: Mysql query no coge variable

Cita:
Iniciado por pateketrueke Ver Mensaje
Ahora copia y pega la consulta que imprimiste directamente en phpMyAdmin, ¿funciona?
Uups,
no me da nada, no funciona??
  #15 (permalink)  
Antiguo 13/12/2012, 07:42
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Mysql query no coge variable

No, no cambies nada copia y pega lo que imprime el echo.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #16 (permalink)  
Antiguo 13/12/2012, 07:44
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 15 años, 5 meses
Puntos: 6
Respuesta: Mysql query no coge variable

ujujuj
Ya lo veo,
me imprime Casa Test, debe de ser Casa_Test
será que en la pagina anterior he quitado la _ y despues no he vuelto a poner la _ otra vez....
  #17 (permalink)  
Antiguo 13/12/2012, 07:44
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Mysql query no coge variable

Que error te da phpmyadmin?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #18 (permalink)  
Antiguo 13/12/2012, 07:50
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 15 años, 5 meses
Puntos: 6
Respuesta: Mysql query no coge variable

Cita:
Iniciado por quimfv Ver Mensaje
Que error te da phpmyadmin?
Un valor vacio
  #19 (permalink)  
Antiguo 13/12/2012, 07:52
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 15 años, 5 meses
Puntos: 6
Respuesta: Mysql query no coge variable

Gracias a todos,
ya va,
en la pagina anterior imprimo la variable para los navegantes y quito la _ y no me acorde de ponerlo otra vez....
Asi que por post he mandado hidden el nombre Casa Test en vez de Casa_Test
Ahora va bien asi:
<p>Property you have choosen to book:<span class="bold"> <?php $propiedad = str_replace("_", " ", $propiedad);?>
<?php print $propiedad;?><?php $propiedad = str_replace(" ", "_", $propiedad);?></span></p>

<input type="hidden" name="propiedad" value="<?php print $propiedad;?>">
  #20 (permalink)  
Antiguo 13/12/2012, 07:53
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 15 años, 5 meses
Puntos: 6
Respuesta: Mysql query no coge variable

Como siempre, alguna tontería. Gracias de nuevo, de verdad me estaba volviendo loca

Etiquetas: formulario, mysql, query, variables
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 21:30.