Hey all,

I'm trying to loop through a large growing record set, using code like:

$options = array(
    Zend_Db::AUTO_QUOTE_IDENTIFIERS => false
);

$db = Zend_Db::factory (
    $config['database.adapter'],
    array (
        'host' => $config['database.params.host'],
        'dbname' => $config['database.params.dbname'],
        'username' => $config['database.params.username'],
        'password' => $config['database.params.password'],
        'port' => $config['database.params.port'],
        'options' => $options
    )
);

$db->query('SET NAMES utf8');

$select = $db->select()->from($thisDBTable)->where('filtered = ?', 0);
$stmt = $db->query($select);

while ($row = $stmt->fetch()) {

        // do some processing stuff and test the record for exclusion
        // ...

        // if the processing is successful, tag the record as filtered for
archiving later
        $db->update($thisDBTable, array('filtered' => 0), "id =
".$row['id']);

        // count the rows
        $cnt++;
        if ($cnt>3) { break;} // debug stoper
}
echo 'Records processed  '. $cnt.'<BR>';

It always stops with $cnt of 0 records unless I replace the update statement
with an echo $row['id'], it returns a $cnt of 4.

I'm guessing this is because I'm reusing the $db and since it is not a
buffered result it overwrites the original query with the update query. (am
I guessing right?)

Anyone know how I can update a record set when using the $stmt->fetch()
loop?

Thanks
Terre

Reply via email to