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 | |