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.
# Create an ADOConnection
require('../libs/adodb5/adodb.inc.php');
$conn = &ADONewConnection('mysql');
$conn->PConnect('localhost', 'root', 'pass', 'database');
# Create a DatabaseIterator instance
$databaseIt = new DatabaseIterator($conn);
# List tables
foreach($databaseIt as $table) {
echo $table->name . PHP_EOL;
}
# Set an internal SQL and list rows using RowIterator::each() method
$databaseIt['contents']->select('pk_content, title')
->where('title REGEXP "[[.backslash.]]"');
$foo = create_function('$item', 'echo $item->title . PHP_EOL;');
$databaseIt['contents']->each($foo);
# Get CREATE TABLE syntax for current table
echo $databaseIt['contents']->getCreateTable();
echo $databaseIt->from('contents')->getCreateTable();
# Insert new data
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);
}
# Alternative syntax
$row = $databaseIt['events']->newRow();
$row->insert($std);
o
$databaseIt['events']->insert($std);
# Update/delete a row
$databaseIt['events'][0]->summary = 'Hello';
$databaseIt['events'][0]->update();
$databaseIt['events'][0]->delete();
# Using adodb capabilities (transactions)
$conn->BeginTrans();
foreach($rows as $row) {
$row->permalink = preg_replace('/[^a-zA-Z0-9_\-\/\.]/', '', $row->permalink);
$row->update();
}
echo('Done.');
$conn->RollbackTrans(); // or $conn->CommitTrans();