Migrare da Mysql a PDO senza rifare tutto

L'estensione mysql per PHP sta per essere contrassegnata come deprecated.
Le alternative sono due: passare a mysqli oppure a PDO. Io ho scelto quest'ultima, che ormai è presente in tutti i server di base, e l'ho scelta perché a fronte di qualche microsecondo di maggiore lentezza (mi son letto decine di benchmark con diversi scenari) permette di utilizzare molti database senza modificare il codice di esecuzione delle query e quindi rende il software che si sta sviluppando più versatile.

Mi serviva trovare un modo, il meno traumatico possibile, di convertire le mie query mysql in PDO.
Per questo ho scritto questa manciata di funzioni, che può essere estesa ma è sufficiente a ricoprire i miei bisogni, che sostituiscono le vecchie mysql_query, mysql_fetch_array etc.

	function ksql_connect($host,$dbname,$user,$password)
{
    try
    {
        $GLOBALS['__db']['pdo']=new PDO('mysql:host='.$host.';dbname='.$dbname , $user, $password);
        $GLOBALS['__db']['pdo']->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $GLOBALS['__db']['pdo']->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

    } catch(PDOException $e) {
        // die if an error occurs
        trigger_error('We are sorry, a database error occurred.', E_USER_ERROR);
        return false;
    }
    return $GLOBALS['__db']['pdo'];
}

function ksql_real_escape_string($string)
{
    $string=$GLOBALS['__db']['pdo']->quote($string);
    $string=substr($string,1,-1);
    return $string;
}

function ksql_query($query)
{
    try
    {
        $results=$GLOBALS['__db']['pdo']->prepare($query);
        $results->closeCursor();
        $results->execute();
    
    } catch(PDOException $e) {
        // die if an error occurs
        if(isset($_SESSION['iduser'])) trigger_error($e->errorInfo[2], E_USER_ERROR);
        else trigger_error('We are sorry, a database error occurred.', E_USER_ERROR);
        return false;
    }

    return $results;
}

function ksql_fetch_array($results)
{
    return $results->fetch(PDO::FETCH_ASSOC);
}

function ksql_insert_id()
{
    return $GLOBALS['__db']['pdo']->lastInsertId();
}

function ksql_close()
{
    if(isset($GLOBALS['__db']['pdo'])) unset($GLOBALS['__db']['pdo']);
}

Mi è poi bastato includere queste funzioni nel progetto PHP e sostituire tutti i mysql_ con dei ksql_ nel mio codice (lo si fa con un replace automatico in 10 secondi).
Ora funziona tutto a dovere con PDO, e l'estensione mysql e i suoi problemi di sicurezza possono andare in pensione.