Class it_dbi:

/**
 * Puts next result from previous select() in member variables
 * @return true if another record was fetched, false if no more records
 * @see select()
 */
function iterate()
{
    if (!
$this->_nofetch)
    {
        if (
$this->_data $this->_fetch_assoc($this->_result))
        {
            if (
$localizedfields $this->_localizedfields)
                foreach (
$localizedfields as $field => $dummy)
                    unset(
$this->$field);

            foreach ((array)
$this->_dyndata as $field => $dummy)
                unset(
$this->$field);

            foreach ((
$this->_dyndata = ($t $this->_data['dyncols']) ? (array)json_decode($ttrue) : []) as $field => $value)
                
$this->_data[$field] = $value;
            unset(
$this->_data['dyncols']);

            foreach (static::
_read_postprocess($this->_data) as $field => $value)
            {
                
$this->$field = (isset($value) && $this->_convertfunc[$field]) ? ($this->_data[$field] = $this->_convertfunc[$field]($value)) : $value;

                if (!
array_key_exists($field$this->_data))    # Register fields added by _read_postprocess() so they get clear()ed
                    
$this->_data[$field] = $value;
            }

            if (
$localizedfields)
            {
                
$lang T_lang();
                foreach (
$localizedfields as $field => $dummy)
                {
                    
$value $this->{$field "_" $lang};

                    if (!isset(
$value))
                        
$value $this->{$field "_" $this->_p['localized_defaultlanguage']};

                    if (isset(
$value))
                    {
                        if (isset(
$this->$field))
                            
it::fatal("Field name clash: Overwriting {$this->_p['table']}.$field with {$field}_{$lang}, only use one of those fields");
                        else
                            
$this->$field $value;
                    }
                }
            }

            if (!empty(
$this->_p['keyfield']))
                
$this->_key $this->_data[$this->_p['keyfield']];
        }
        else
        {
            
$this->clear();
            if (
$this->_p['unbuffered'])
                
$this->_result->close();
        }
    }
    else
        
$this->_nofetch false;

    return (bool)
$this->_data;
}