formulario - Analizador SQL PHP MySQL(INSERTAR y ACTUALIZAR)
update php mysql formulario (6)
Estoy buscando analizar INSERTAR y ACTUALIZAR consultas SQL MySQL en PHP para determinar qué cambios se realizaron a partir de qué datos originales. Ahora esto sería bastante fácil de crear, pero quiero ver si hay bibliotecas existentes en PHP para hacer esto.
Básicamente lo que tengo es una tabla con todas las consultas anteriores que se han ejecutado en una base de datos. Ya he separado el nombre de la tabla y el tipo de consulta. Estoy buscando crear un registro de cambios completo para la visualización del usuario en base a estos datos, por lo que necesito obtener los valores del INSERT original y los cambios que se realizan en cada ACTUALIZACIÓN. Al final, necesito el nombre del campo y el nuevo valor, y con la (s) identificación (es) del registro. Haré el resto de la revisión / embellecimiento, incluido el nombre de la columna para lectura humana y si el valor de un campo no ha cambiado en realidad.
Por el momento, probablemente no necesite hacer UPDATE en varias tablas, pero sería útil.
¿Qué bibliotecas hay para hacer esto?
Facebook lanzó una versión PHP de código abierto de su analizador FQL . Por lo que yo era, era un código bastante bueno. Posiblemente puedas hackear eso para trabajar con SQL regular.
Un poco fuera de lugar, pero tal vez una sugerencia que vale la pena pensar:
Desde MySQL 5.0, el soporte para desencadenadores es bastante bueno. Si desea mantener un registro de los cambios que se han realizado en una base de datos, en lugar de almacenar las sentencias sql, también puede definir desencadenantes de inserción / actualización y definir otra tabla en la que puedan almacenarse estos valores. Podría, por ejemplo, crear una tabla simple con los campos
timestamp, user, field, old_value, new_value
e inserte los valores respectivos siempre que ocurra un DML en una de sus tablas observadas. Para simplificar esto aún más, podría agregar el campo
table
a la "tabla de seguimiento" para almacenar todos los cambios en todas las tablas observadas en un solo lugar.
Consulte el manual de MySQL para obtener más información sobre este tema.
Puedes probar: dqml2tree sql (dql y dml) query parser escrito en php
Puede darle una oportunidad: SQL Parse y compilar
http://pear.php.net/package/SQL_Parser
http://sourceforge.net/projects/txtsql
http://code.google.com/p/php-sql-parser
Para Perl hay más variedad
En resumen, descubrí que el paquete PEAR: SQL_Parser ha proporcionado la solución más limpia a corto plazo, mientras que el paquete PEAR: PHP_Parser_Generator (el generador que utiliza FSQL) parece una solución a largo plazo realmente sólida.
Descubrí que txtSQL no era lo suficientemente robusto y no analizó SQL lo suficiente como para justificar el uso, al menos en mi opinión.