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$MATERIAL = 'PLASTICO';
$fromm = '2014-08-01';
$too = '2014-08-08';
$PERFIL = 'XXXX'; // No sé qué representa "perfil".
En ese caso la query quedaría armada así:
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$sql = "SELECT SUM(".$MATERIAL.")
FROM visitas
WHERE FECHA BETWEEN '$fromm' AND '$too' AND PERFIL='$PERFIL'";
echo $sql;
A partir de alli podemos ver qué pasa.