set_error_handler() and trigger_error() are good tools for logging error messages

They are not a substitute for proper flow control statements

<?php
function log_error_sqlite($errno$errstr$errfile$errline
{
    global 
$edbh;

    if (!
$edbh) {
        
$edbh sqlite_open("errors.sqlite");
        
sqlite_query(
        
'create table errors (
            errno, 
            errstr, 
            errfile, 
            errline
        )'
$edbh);
    }

    
sqlite_query(sprintf("insert into errors values ('%s', '%s', '%s', '%s')"
        
sqlite_escape_string($errno), 
        
sqlite_escape_string($errstr), 
        
sqlite_escape_string($errfile), 
        
sqlite_escape_string($errline)), $edbh);
}
set_error_handler('log_error_sqlite');

$result 0;
?>