Wenn jemand behauptet, dass ich mich im MYSQL auskenne ist es sicherlich eine Lüge!
Daher würde ich gerne EURE Hilfe zu einem Problem haben, welches mich beschäftigt:
Ich möchte innerhalb des Joomla-Frameworks zu Entwicklungszwecken eine unbestimmte Anzahl von Tabellen (deren Namen mit z.B. "#__jcomponent_" beginnen) mit Truncate leeren.
Ich komme aber nicht so ganz dahinter, wie man das allgemeingültig für alle Datenbanknamen erledigt.
Meine Version - beim Aufruf der Funktion TruncateTables() - löscht natürlich nur die Tabellen, die in meiner eigenen Datenbank (mit dem Name "mytest") gefunden werden. Wie kann man es jedoch allgemein wirksam gestaltet?
Am liebsten wäre es mir natürlich wenn ich das Ganze ohne die Funktion "obj2Array" lösen könnte.
Dank für Euer Interesse und Eure Hilfe!
Hier der Code:
Code:/** * obj2Array# * converts simpleXml object to array * * Variables: $o['obj']: simplexml object * * @return * */ function obj2Array( $obj ) { $arr = (array)$obj; if ( empty( $arr ) ) { $arr = ''; } else { foreach ( $arr as $key=>$value ) { if ( !is_scalar( $value ) ) { $arr[$key] = obj2Array( $value ); } } } return $arr; } function TruncateTables() { $db =& JFactory::getDBO(); echo '<p><strong>' . JText::_( 'Truncating ALL tables of jcomponent for development issues.' ) . '</strong></p>'; $query = "SHOW TABLES LIKE '%_jcomponent_%'"; $db->setQuery( $query ); $results = $db->loadObjectList(); foreach ( $results as $result ) { $arr = obj2Array($result); $query = 'TRUNCATE TABLE `'.$arr['Tables_in_mytest (%_jcomponent_%)'].'`'; $db->setQuery( $query ); $db->query(); echo $arr['Tables_in_mytest (%_jcomponent_%)']; if ( $db->query() ) { echo ' - <span style="color:green">' . JText::_( 'Success' ) . '</span>'; } else { echo ' - <span style="color:red">' . JText::_( 'Failed' ) . '</span>'; } echo '<br />'; } return ''; }


LinkBack URL
About LinkBacks
Zitieren
Lesezeichen