PHP-MySQL-SQL-parser (INSERT und UPDATE)
Ich bin auf der Suche, um zu analysieren, INSERT-und UPDATE-MySQL-SQL-Abfragen in PHP zu bestimmen, welche änderungen wo gemacht aus, was die ursprünglichen Daten. Nun, dies wäre ziemlich leicht zu erstellen, aber ich will sehen, ob es irgendwelche bestehenden Bibliotheken in PHP, dies zu tun.
Im Grunde das, was ich habe, ist eine Tabelle mit allen der oben genannten Abfragen, die ausgeführt wurden, in einer Datenbank. Ich habe bereits getrennt, der name der Tabelle und die Art der Abfrage. Ich bin auf der Suche, um eine komplette change-log für Benutzer die Anzeige basiert auf diesen Daten, so brauche ich, um die Werte der original-INSERT und dann die änderungen in jedem UPDATE. Am Ende muss ich Feld name und die neue Wert-und mit der Datensatz-id(s). Ich werde den rest der Prüfung/Verschönerung einschließlich der Spalte name, um den Menschen lesbar und wenn ein Feld einen Wert hat sich nicht wirklich geändert.
Im moment, habe ich wahrscheinlich nicht brauchen, um mehrere Tabelle zu AKTUALISIEREN, aber es wäre nützlich.
Welche Bibliotheken gibt es, dies zu tun?
InformationsquelleAutor Darryl Hein | 2008-11-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
http://pear.php.net/package/SQL_Parser
http://sourceforge.net/projects/txtsql
http://code.google.com/p/php-sql-parser
Für Perl gibt es mehr Abwechslung
Dein zweiter link scheint nicht mehr gültig.
Behoben
Sieht aus wie code.google.com/p/php-sql-parser wurde verschoben, um die github.com/greenlion/PHP-SQL-Parser (es ist die am schnellsten parser, die ich bisher ausprobiert habe, aber gibt ein low-level-Baum-statt-Klasse-Typen wie select, insert usw.)
InformationsquelleAutor Vinko Vrsalovic
Etwas abseits der Frage, aber vielleicht eine Anregung Wert, darüber nachzudenken:
Seit MySQL 5.0, Unterstützung für Trigger ist auch ganz gut. Wenn Sie möchten, halten Sie eine Aufzeichnung von dem, was änderungen an einer Datenbank, statt der Speicherung der sql-statements könnte man auch definieren, insert/update-Trigger und definieren Sie eine weitere Tabelle, in der diese Werte gespeichert werden können. Zum Beispiel können Sie eine einfache Tabelle erstellt mit den Feldern
einfügen und die entsprechenden Werte, wenn eine DML-auf einem der überwachten Tabellen aufgetreten.
Um dies zu vereinfachen noch mehr, fügen Sie das Feld
dem "tracking-Tabelle" zu speichern Sie alle änderungen an allen überwachten Tabellen an einem Ort.
Sehen die MySQL-Handbuch für mehr infos zu diesem Thema.
InformationsquelleAutor Dan Soap
Können Sie ihm eine chance geben:
SQL Parsen und Kompilieren
InformationsquelleAutor Tom Schaefer
Facebook veröffentlicht eine open-source-PHP-version Ihrer FQL-parser. Von dem, was ich war, war es doch Recht ordentlich code. Man könnte eventuell hacken, um die Arbeit mit normalen SQL.
InformationsquelleAutor Josh
können Sie versuchen :
dqml2tree sql(dql und dml) - Anfrage-parser in php geschrieben
InformationsquelleAutor
Kurz gesagt, ich fand, dass die BIRNE:SQL_Parser Paket hat die saubersten Kurzfristige Lösung, während die BIRNE:PHP_Parser_Generator Paket (der generator, FSQL) verwendet, sieht aus wie eine wirklich stabile längerfristige Lösung.
Fand ich txtSQL war nicht robust genug und hat nicht Parsen SQL gut genug zu rechtfertigen mit, zumindest meiner Meinung nach.
InformationsquelleAutor