21/07/2008, 05:11
|
|
Respuesta: Varias consultas al servidor en una funcion starex_rex, por lo que he podido entender, controlas completamente desde Javascript la query que se va a lanzar a BBDD. Me imagino entonces que lo que tienes en PHP en el servidor será bastante simple y genérico, ¿no? Has hecho algo que puede recibir los datos de una query (tabla, campos) y monta la query y devuelve lo que salga, ¿correcto?
Hay varios problemas con esta forma de hacer las cosas.
1. El tema de la seguridad. Imagina que yo, desde mi navegador lanzo una petición a tu página pidiendo los campos usuario y password de la tabla usuarios (o cualquier cosa similar). Nunca hay que dejar que las querys se construyan desde el cliente.
2. Lo que tú mismo te encuentras ahora. Que hacer una query simple parametrizada es... simple. Pero hacer una query compleja parametrizada es... MUY complejo. Imagino que Maborak te decía que miraras Propel no para que lo uses, sino para que mires en su código cómo construyen ellos las querys. Además, si lo miras, verás que no es tan sencillo y que la casuística se amplía mucho más que para el caso de una query que sólo afecta a una tabla.
Mi consejo es:
1. Que pongas las querys en el servidor, no dejes que sea el cliente el que diga "dame esta tabla".
2. Que NO intentes hacer un sistema de querys genéricas parametrizadas. Haz querys para cada cosa que necesites. Es más, haz procesos en el servidor. Si una acción consiste en "buscar esta dato en esta tabla. multiplicarlo por tres, buscar este otro dato y sumarlo a lo que llevo. guardar el resultado en esta otra tabla y actualizar esta otra tabla con la hora de la acción", todo eso es un proceso y todo ello debe estar contemplado como un proceso. Y el lugar donde debe estar esa lógica de proceso es uno y el más adecuado es el servidor.
Por último decirte que está bien simplificar, hacer cosas sencillas, pero hay que "simplificar todo lo que se pueda, pero no más". A veces por hacer que las cosas sean sencillas acabamos complicándolo más de lo que deberíamos. |