Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] No funciona la variable dentro de la consulta MYSQL

Estas en el tema de No funciona la variable dentro de la consulta MYSQL en el foro de PHP en Foros del Web. Muchas Gracias de antemano a quienes me puedan ayudar. Código PHP: $MATERIAL  =  $_POST [ "MATERIAL" ];  En la siguiente consulta necesito que la variable ...
  #1 (permalink)  
Antiguo 29/08/2014, 20:30
 
Fecha de Ingreso: septiembre-2010
Mensajes: 12
Antigüedad: 13 años, 6 meses
Puntos: 0
Pregunta No funciona la variable dentro de la consulta MYSQL

Muchas Gracias de antemano a quienes me puedan ayudar.

Código PHP:
$MATERIAL $_POST["MATERIAL"]; 
En la siguiente consulta necesito que la variable anterior sea utilizada pero
no me sirve, eso un campo en la base de datos pero es elegido de una lista

no funciona si le pongo la variable, pero si le coloco el nombre directamente si funciona.

¿Como debo de poner la variable para que me funcione?

Código PHP:
mysql_query("SELECT SUM('$MATERIAL') FROM visitas WHERE FECHA BETWEEN '$fromm' AND '$too' AND PERFIL='$PERFIL'"); 

Muchas Gracias
  #2 (permalink)  
Antiguo 29/08/2014, 20:32
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: No funciona la variable dentro de la consulta MYSQL

que te imprime
Código PHP:
Ver original
  1. <pre>
  2. var_dump($MATERIAL);
  3. </pre>

Saludos
  #3 (permalink)  
Antiguo 29/08/2014, 20:37
 
Fecha de Ingreso: septiembre-2010
Mensajes: 12
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: No funciona la variable dentro de la consulta MYSQL

Cita:
Iniciado por matt_1985 Ver Mensaje
que te imprime
Código PHP:
Ver original
  1. <pre>
  2. var_dump($MATERIAL);
  3. </pre>

Saludos

Hola y Gracias.

me imprime lo que se eligió en una lista deplegable, si antes de la consulta imprimo

Código PHP:
echo"$MATERIAL"
perfectamente me muestra lo elegido en la lista pero misma variable en SELECT SUM('$MATERIAL').... NO funciona.
  #4 (permalink)  
Antiguo 29/08/2014, 20:46
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: No funciona la variable dentro de la consulta MYSQL

No muestras que imprimio lo que te escribí, podrías poner tu código mas completo es decir toda la función que hace la consulta ..

Lo otro la funcion mysql esta deprecated debes usar mysqli o pdo.
  #5 (permalink)  
Antiguo 29/08/2014, 21:00
 
Fecha de Ingreso: septiembre-2010
Mensajes: 12
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: No funciona la variable dentro de la consulta MYSQL

Es un select como te dije :

Código HTML:
Ver original
  1. <label for="select"></label>
  2. <select name="select" id="select">
  3.   <option value="PLASTICO">PLASTICO</option>
  4.   <option value="METAL">METAL</option>


lo recojo en esa variable:


Código HTML:
Ver original
  1. $MATERIAL = $_POST["MATERIAL"];


echo"$MATERIAL"; eso imprime lo elegido PLASTICO O METAL
pero en la consulta no funciona.


Código PHP:
mysql_query("SELECT SUM('$MATERIAL') FROM visitas WHERE FECHA BETWEEN '$fromm' AND '$too' AND PERFIL='$PERFIL'"); 
  #6 (permalink)  
Antiguo 29/08/2014, 23:45
 
Fecha de Ingreso: agosto-2013
Ubicación: Talca
Mensajes: 40
Antigüedad: 10 años, 7 meses
Puntos: 1
Respuesta: No funciona la variable dentro de la consulta MYSQL

No se si me equivoco, pero creo que la variable quedaria ".$material.", ya que al ser un int el que vas a sumar no lleva comillas.

O sea la consulta quedaría asi:

Código PHP:
Ver original
  1. SELECT SUM(".$MATERIAL.") FROM visitas WHERE FECHA BETWEEN '$fromm' AND '$too' AND PERFIL='$PERFIL'

Salu2
  #7 (permalink)  
Antiguo 30/08/2014, 06:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No funciona la variable dentro de la consulta MYSQL

Cita:
Iniciado por SimonSay Ver Mensaje
(...)

En la siguiente consulta necesito que la variable anterior sea utilizada pero
no me sirve, eso un campo en la base de datos pero es elegido de una lista
(...)
Código PHP:
mysql_query("SELECT SUM('$MATERIAL') FROM visitas WHERE FECHA BETWEEN '$fromm' AND '$too' AND PERFIL='$PERFIL'"); 
El armdo de la query tiene un error básico: los nombres de objetos de bBDD tales como campos, tablas, bases, funciones, etc. jamás van entre apóstrofos, ya que estos se usan en MySQL pura y exclusivamente para cadenas de texto.
Poner el nombre de una columna o una tabla entre apóstrofos generará un error de sintaxis, o bien devolverá cero en ciertas funciones.
Código PHP:
mysql_query("SELECT SUM($MATERIAL) 
FROM visitas 
WHERE FECHA BETWEEN '$fromm' AND '$too' 
    AND PERFIL='$PERFIL'"
); 
En este código hay que asegurarse que el campo "FECHA" sea efectivamente un DATE, DATETIME o TIMESTAMP, y que el contenido de las variables respectivas respeten el formato "AAAA-MM-DD", ya que de lo contrario ese BETWEEN no funcionará.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 30/08/2014, 14:40
 
Fecha de Ingreso: septiembre-2010
Mensajes: 12
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: No funciona la variable dentro de la consulta MYSQL

Muchas Gracias,

Sigue sin funcionar, si en campo es INT y el de fecha es DATE pero no funciona de ninguna manera:

mysql_query("SELECT SUM('$MATERIAL')...

mysql_query("SELECT SUM(".$MATERIAL.")...

mysql_query("SELECT SUM($MATERIAL)...


no me funciona de ninguna manera esa variable.

Alguien que pueda saber porque no funciona?

Gracias.
  #9 (permalink)  
Antiguo 30/08/2014, 16:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No funciona la variable dentro de la consulta MYSQL

Cita:
Sigue sin funcionar,
Eso no nos dice nada.
Trata de ser más específico, nosotros no tenemos ni tu base ni tus datos, por lo que no podemos ver los resultados.

Por otro lado, analizando lo que describes, veo que lo que realmente contiene la variable no parece ser el nombre de un campo, sino la denominación del material que lo compone. En ese caso, para que la query funcione sin errores, la tabla "VISITA" debería tener una columna denominada "PLASTICO" y otra "METAL".
¿Es así?
En ese caso, supongamos que los valores recibidos sean estos:
Código PHP:
Ver original
  1. $MATERIAL = 'PLASTICO';
  2. $fromm = '2014-08-01';
  3. $too = '2014-08-08';
  4. $PERFIL = 'XXXX'; // No sé qué representa "perfil".

En ese caso la query quedaría armada así:
Código MySQL:
Ver original
  1. SELECT SUM(PLASTICO)
  2. FROM visitas
  3. WHERE FECHA BETWEEN '2014-08-01' AND '2014-08-08'
  4.     AND PERFIL='XXXX'
Para comprobarlo deberías al menso hacer dos cosas:
1) Separa la creación de la query de la ejecución, cosa que puedas comprobar la sintaxis antes de ejecutarla.
2) Captura la salida por error con un or die().

Código PHP:
Ver original
  1. $sql = "SELECT SUM(".$MATERIAL.")
  2. FROM visitas
  3. WHERE FECHA BETWEEN '$fromm' AND '$too' AND PERFIL='$PERFIL'";
  4. echo $sql;
  5. $result = mysql_query($sql) or die("Error al ejecutar la consulta: ".mysql_error());

A partir de alli podemos ver qué pasa.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 30/08/2014, 17:19
 
Fecha de Ingreso: septiembre-2010
Mensajes: 12
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: No funciona la variable dentro de la consulta MYSQL

Hola gnzsoloyo,


Justamente $MATERIAL es el campo nombre de los campos en la base de datos
lo que pasa el lo siguiente, CAMPO PLASTICO Y METAL

Si hago esto:


$sql = "SELECT SUM(PLASTICO) FROM visitas WHERE FECHA BETWEEN '$fromm' AND '$too' AND PERFIL='$PERFIL'";

todo anda perfecto

si hago esto igual :

$sql = "SELECT SUM(METAL) FROM visitas WHERE FECHA BETWEEN '$fromm' AND '$too' AND PERFIL='$PERFIL'";

igual todo bien,


pero si recojo la variable con:


$MATERIAL = $_POST["MATERIAL"];


y uso esa variable en la consulta no sirve :

$sql = "SELECT SUM('$MATERIAL') FROM visitas WHERE FECHA BETWEEN '$fromm' AND '$too' AND PERFIL='$PERFIL'";


ni asi:

$sql = "SELECT SUM(".$MATERIAL.") FROM visitas WHERE FECHA BETWEEN '$fromm' AND '$too' AND PERFIL='$PERFIL'";

ni asi :

$sql = "SELECT SUM($MATERIAL) FROM visitas WHERE FECHA BETWEEN '$fromm' AND '$too' AND PERFIL='$PERFIL'";


Espero haberme explicado bien.
  #11 (permalink)  
Antiguo 30/08/2014, 17:32
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No funciona la variable dentro de la consulta MYSQL

Cita:
Espero haberme explicado bien.
TE has explicado nuevamente, pero repitiendo todo lo que ya te entendimos y no aportas lo esencial: ¿Probaste lo que te dije?

No me interesa cómo escribes el código en PHP, sino que quiero ver:
1) Cómo queda armado en la consulta.
2) Verificar si MySQL está devolviendo algún error.

Y ninguna de ambas cosas surge de lo que dices... Sólo surge de haber una prueba con las sugerencias que te sugiero. El resto es redundante.

En serio, ¿es muy difícil hacer esto??:
Código PHP:
Ver original
  1. $sql = "SELECT SUM(".$MATERIAL.") ";
  2. $sql .= "FROM visitas ";
  3. $sql .= "WHERE FECHA BETWEEN '$fromm' AND '$too'  ";
  4. $sql .= "AND PERFIL='$PERFIL'";
  5. echo $sql;

Haz lo que te dije y postea los resultados:

1) Carga la query en una variable y haz que se muestre en pantalla, cópiala y posteala acá, tal y como queda armada.

2) Agrega el "or die()" a la ejecución y veamos si MySQL está devolviendo algo.

yo estimo que puede haber un problema, pero sin hacer este debuggeo es sólo teoría.

Para ser claro:
Cita:
pero si recojo la variable con:

$MATERIAL = $_POST["MATERIAL"];

y uso esa variable en la consulta no sirve :
Para mi, que el dato no está llegando como crees... Pero para asegurarnos, podrías hacer el favor de postear el código completo del script?
Por allí hay más cosas que no nos estás diciendo y que son las que realmente afectan.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 30/08/2014 a las 17:49
  #12 (permalink)  
Antiguo 30/08/2014, 17:48
 
Fecha de Ingreso: septiembre-2010
Mensajes: 12
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: No funciona la variable dentro de la consulta MYSQL

Cita:
Iniciado por gnzsoloyo Ver Mensaje
TE has explicado nuevamente, pero repitiendo todo lo que ya te entendimos y no aportas lo esencial: ¿Probaste lo que te dije?

No me interesa cómo escribes el código en PHP, sino que quiero ver:
1) Cómo queda armado en la consulta.
2) Verificar si MySQL está devolviendo algún error.

Y ninguna de ambas cosas surge de lo que dices... Sólo surge de haber una prueba con las sugerencias que te dije. El resto es redundante.

Haz lo que te dije y postea los resultados:
1) Carga la query en una variable y haz que se muestre en pantalla, cópiala y posteala acá, tal y como queda armada.

2) Agrega el "or die()" a la ejecución y veamos si MySQL está devolviendo algo.

yo estimo que puede haber un problema, pero sin hacer este debuggeo es sólo teoría.



OK


EN REALIDAD SE LLAMA PLASTICO_PET EL CAMPO .


ESTO:


Código PHP:
$sql "SELECT SUM(".$MATERIAL.") FROM visitas WHERE FECHA BETWEEN '$fromm' AND '$too' AND PERFIL='$PERFIL'";
echo 
$sql;
$result mysql_query($sql) or die("Error al ejecutar la consulta: ".mysql_error()); 
IMPRIME ESTO:


SELECT SUM(PLASTICO_ PET) FROM visitas WHERE FECHA BETWEEN '2014-08-01' AND '2014-08-27' AND PERFIL='RP-001' Error al ejecutar la consulta: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'PET) FROM visitas WHERE FECHA BETWEEN '2014-08-01' AND '2014-08-27' AND PERFIL='' at line 1



Ahí puedes ver que da error y la consulta.

Gracias
  #13 (permalink)  
Antiguo 30/08/2014, 18:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No funciona la variable dentro de la consulta MYSQL

Tienes el nombre de la columna mal escrito. Hay un espacio en blanco en el nombre...
No deben existir, y si así lo tienes en la tabla de la base, está mal.

Código MySQL:
Ver original
  1. SELECT SUM(PLASTICO_ PET) -- <-- Hay un espacio en blanco en ese nombre de columna.
  2. FROM visitas
  3. WHERE FECHA BETWEEN '2014-08-01' AND '2014-08-27' AND PERFIL='RP-001'

¿Qué simple, no?

Por eso suelo decir que el 99% de los errores de sintaxis en una creación dinámica de queries, es producto de lo que contienen las variables...

Ahora bien, quiero hacerte notar que cuando pusiste la definición de los selectores dde donde proviene ese valor, no nos estabas dando información verídica, y si no nos la das, es imposible ayudar.
Lo que dijiste era que ese valor proviene de esto:
Código HTML:
Ver original
  1. <label for="select"></label>
  2. <select name="select" id="select">
  3.   <option value="PLASTICO">PLASTICO</option>
  4.   <option value="METAL">METAL</option>
Y no es cierto. Ninguna de las opciones tiene ese value...
¿De dónde viene?
No es del $_POST...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 30/08/2014 a las 18:26
  #14 (permalink)  
Antiguo 30/08/2014, 18:36
 
Fecha de Ingreso: septiembre-2010
Mensajes: 12
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: No funciona la variable dentro de la consulta MYSQL

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Tienes el nombre de la columna mal escrito. Hay un espacio en blanco en el nombre...
No deben existir, y si así lo tienes en la tabla de la base, está mal.

Código MySQL:
Ver original
  1. SELECT SUM(PLASTICO_ PET) -- <-- Hay un espacio en blanco en ese nombre de columna.
  2. FROM visitas
  3. WHERE FECHA BETWEEN '2014-08-01' AND '2014-08-27' AND PERFIL='RP-001'

¿Qué simple, no?

Por eso suelo decir que el 99% de los errores de sintaxis en una creación dinámica de queries, es producto de lo que contienen las variables...

Ahora bien, quiero hacerte notar que cuando pusiste la definición de los selectores dde donde proviene ese valor, no nos estabas dando información verídica, y si no nos la das, es imposible ayudar.
Lo que dijiste era que ese valor proviene de esto:
Código HTML:
Ver original
  1. <label for="select"></label>
  2. <select name="select" id="select">
  3.   <option value="PLASTICO">PLASTICO</option>
  4.   <option value="METAL">METAL</option>
Y no es cierto. Ninguna de las opciones tiene ese value...
¿De dónde viene?
No es del $_POST...


Muchas Gracias gnzsoloyo


Lo anotare y lo recordare para el futuro, te lo agradezco mucho.

Etiquetas: fecha, mysql, select, variable
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:21.