Я ищу для анализа запросов INSERT и UPDATE MySQL SQL в PHP, чтобы определить, какие изменения произошли из исходных данных. Теперь это было бы очень легко создать, но я хочу посмотреть, есть ли какие-либо существующие библиотеки в PHP для этого.
В принципе, у меня есть таблица со всеми вышеперечисленными запросами, которые были запущены в базе данных. Я уже выделил имя таблицы и тип запроса. Я хочу создать полный журнал изменений для просмотра пользователями на основе этих данных, поэтому мне нужно получить значения исходного INSERT, а затем изменения, которые сделаны в каждом UPDATE. В конце мне нужно имя поля и новое значение, а также идентификатор записи. Я сделаю остальную часть проверки / украшения, включая имя столбца, для человека, читаемого, и если значение поля фактически не изменилось.
На данный момент мне, вероятно, не нужно делать несколько таблиц UPDATE, но это было бы полезно.
Какие библиотеки должны делать это?
http://pear.php.net/package/SQL_Parser
http://sourceforge.net/projects/txtsql
http://code.google.com/p/php-sql-parser
Для Perl существует больше разнообразия
Немного от вопроса, но, может быть, стоит подумать:
С MySQL 5.0 поддержка триггеров неплохая. Если вы хотите сохранить запись о том, какие изменения были внесены в базу данных, вместо хранения операторов sql вы также можете определить триггеры insert / update и определить другую таблицу, в которой эти значения могут быть сохранены. Вы могли бы, например, создать простую таблицу с полями
timestamp, user, field, old_value, new_value
и вставлять соответствующие значения всякий раз, когда DML на одной из ваших наблюдаемых таблиц. Чтобы упростить это, вы можете добавить поле
table
в «таблицу отслеживания», чтобы сохранить все изменения во всех просмотренных таблицах в одном месте.
См. Руководство по MySQL для получения дополнительной информации об этой теме.
Вы можете дать ему шанс: SQL Parse and Compile
Facebook выпустил PHP-версию с открытым исходным кодом своего анализатора FQL . Из того, что я был, это был довольно аккуратный код. Вы могли бы взломать это для работы с обычным SQL.
вы можете попробовать: dqml2tree sql (dql и dml) парсер запросов, написанный на php
В двух словах я обнаружил, что пакет PEAR: SQL_Parser предоставил самое чистое краткосрочное решение, в то время как пакет PEAR: PHP_Parser_Generator (генератор, который использует FSQL) выглядит как действительно надежное долгосрочное решение.
Я обнаружил, что txtSQL недостаточно устойчив и недостаточно разбирает SQL, чтобы гарантировать использование, по крайней мере, на мой взгляд.