Mailinglisten-Archive |
Hi, ich weiss das es derer Fragen sicherlich viele gibt aber ich komme nicht drum herum weil es mich wurmt das ich das nicht hinkriege! Problemstellung: Ich habe Flatfiles in denen komplette SQL-Statements stehen. Diese Statements möchte ich überprüfen, ob z.B.: # Menüeintrag ins backendmenü hinzufügen INSERT INTO {table_prefix}backendmenu VALUES ('', 4, 0, 20, 'nav_dedilog', 'main.php?area=plugin&dedi_plugin=dedilog/inc.log.php', 'single', '$perm->have_perm(\'dedilog\')'); ===================================== Dieses Statement richtig gesetzt ist, also ob die inneraddslashes zwischen den ,'' gesetzt sind und gegebenenfalls das Statement ändern. ===================================== Dazu habe ich alles fertig vom lesen der Flatfiles bis zum auswerten und ausführen in einzelnen Statements. Nur mein Regex der die inneraddslashes überprüft hackt manchmal :( Hier ein die betreffenden Codezeilen: ===================================== // funktion die massenhaft statements list und ausführt function bulk_sql($query) { if ($query == '') return; $qenc = $this->encode_sql($query); // einfache funktion die templatevariablen ersetzt, wie zB: {table_prefix} $qarr = $this->_splitsqlfile($qenc); // funktion die ein array mit allen statements zurückliefert if(is_array($qarr)) foreach ($qarr as $num => $qrow) { // todo: if (! preg_match('@DROP[[:space:]]+(IF EXISTS[[:space:]]+)?DATABASE @i ', $sql_query)) // check for drop db // todo: check function _inneraddslashes for errors $qval = @preg_replace_callback('/\,+\s\'{1,1}(.*?)\'{1,1}\,+/sim', array(&$this, '_inneraddslashes'), $qrow); // das eigentliche addslashes $error[$num] = $this->_db->query(trim($qval)); // sql ausführen if (!$error[$num]) $return[$num] = $qval; // errorbehandlung } return $return; } function _inneraddslashes($matches) { return preg_replace(',/' . $matches[1] . '/,', addslashes($matches[1]), $matches[0]); } =================================== Nur funktionieren tut das ganze nicht richtig, weiss jemand Rat? Danke im voraus, Roland Braband
php::bar PHP Wiki - Listenarchive