DatabaseIterator é unha clase que, coa axuda de ADOdb, pretende axilizar o traballo á hora de interactuar cunha base de datos. A idea é programar contra unha base de datos como se estivesemos a traballar con arrays. Aproveitando as características de PHP5 (as interfaces de ArrayIterator, ArrayAccess, os métodos máxicos, ...) é posible percorrer todas as táboas, filas e columnas dunha base de datos, coa seguinte sintase:
$dbIt = new DatabaseIterator($conn); foreach($dbIt as $table) { // loop tables $columns = $table->getColumns(); // get columns foreach($table as $row) { // loop rows echo $row; // call to __toString() method // or loop columns foreach($columns as $col) { echo $row->{$col->name} . PHP_EOL; } } }
DatabaseIterator is a class that use new features of PHP5 (SPL, Iterators, magic methods, ...) to simplify process of iteration with a database. Using a DatabaseIterator, you can work with your database the same mode that you work with arrays.
Download
Crear unha conexión con ADOdb (ADOConnection) e o obxecto DatabaseIterator e listar todas as táboas:
require('../libs/adodb5/adodb.inc.php'); $conn = ADONewConnection('mysql'); $conn->PConnect('localhost', 'root', 'pass', 'database'); $databaseIt = new DatabaseIterator($conn); foreach($databaseIt as $table) { echo $table->name . PHP_EOL; }
Establecer a SQL interna e listar as filas empregando o método each:
$databaseIt['contents']->select('pk_content, title') ->where('title REGEXP ""'); $foo = create_function('$item', 'echo $item->title . PHP_EOL;'); $databaseIt['contents']->each($foo);
Obter a sintase da sentencia "CREATE TABLE" para a táboa actual:
echo $databaseIt['contents']->getCreateTable(); echo $databaseIt->from('contents')->getCreateTable();
Inserindo novos datos:
for($i=0; $i<10; $i++) { $std = new stdClass(); $std->pk_evento = ($i+1); $std->fk_content_categories = 0; $std->summary = 'Testing '.$i; $std->body = 'Proba '.$i; $std->img = 0; $databaseIt['events']->insert($std); } // outra for sintase $row = $databaseIt['events']->newRow(); $row->insert($std);
Actualizar/Eliminar unha fila da táboa:
$databaseIt['events'][0]->summary = 'Hello'; $databaseIt['events'][0]->update(); $databaseIt['events'][1]->delete();
Tamén é posible combinar outras funcionalidades presentes en ADOdb, por exemplo as transaccións:
$conn->BeginTrans(); foreach($rows as $row) { $row->permalink = preg_replace('/[^a-zA-Z0-9_\-\/\.]/', '', $row->permalink); $row->update(); } echo('Feito! (ou non?)'); $conn->RollbackTrans(); // desfacer todos os cambios //ou $conn->CommitTrans(); se todo foi ben
Outros exemplos e documentación:
Última actualización | 2013-04-20 4:10 PM (Europe/Madrid) |
Data de creación | 2009-05-25 6:13 PM (Europe/Madrid) |
DatabaseIterator is a class that use new features of PHP5 (SPL, Iterators, magic methods, ...) to simplify process of iteration with a database. Using a DatabaseIterator, you can work with your database the same mode that you work with arrays. | |
php database framework |