PHP MySQL SQL-парсер (INSERT и UPDATE)

Я ищу для анализа запросов INSERT и UPDATE MySQL SQL в PHP, чтобы определить, какие изменения произошли из исходных данных. Теперь это было бы очень легко создать, но я хочу посмотреть, есть ли какие-либо существующие библиотеки в PHP для этого.

В принципе, у меня есть таблица со всеми вышеперечисленными запросами, которые были запущены в базе данных. Я уже выделил имя таблицы и тип запроса. Я хочу создать полный журнал изменений для просмотра пользователями на основе этих данных, поэтому мне нужно получить значения исходного INSERT, а затем изменения, которые сделаны в каждом UPDATE. В конце мне нужно имя поля и новое значение, а также идентификатор записи. Я сделаю остальную часть проверки / украшения, включая имя столбца, для человека, читаемого, и если значение поля фактически не изменилось.

На данный момент мне, вероятно, не нужно делать несколько таблиц UPDATE, но это было бы полезно.

Какие библиотеки должны делать это?

Немного от вопроса, но, может быть, стоит подумать:

С 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, чтобы гарантировать использование, по крайней мере, на мой взгляд.