Fat Free: Using complex SQL queries
===

Question: Is there an easier /safer way of running more complex SQL queries in Fat Free Framework. The solution I have is to use PDO, but it's messy and ugly as I can't throw exceptions easily.

Background:

Fat Free provides the AXON class for "safe" manipulation of databases, but I want to do a more complex query that AXON can handle.

The DB class is exposed, but I would need to resort to "mysql_real_escape_string()" to build queries which is not guaranteed safe. So the solution appear to be using the exposed PDO.

The exposed PDO as default error handling, which is a pain and results in ugly code.

            $pdo = F3::get('DB')->pdo;
            $sql = 'INSERT INTO config(config_name, config_value, comments) VALUES( :config_name , :config_value , :config_comments)
                         ON DUPLICATE KEY UPDATE config_value= :config_value2';
            if (!$stmt = $pdo->prepare($sql)) {
                $errorInfo = $pdo->errorInfo();
                trigger_error('PDO Error: ' . $pdo->errorCode(). ' ' . $errorInfo[2]);
                exit();
            }

            $stmt->bindValue(':config_name', $field, PDO::PARAM_STR);
            $stmt->bindValue(':config_value', $value, PDO::PARAM_STR);
            $stmt->bindValue(':config_comments', $comments, PDO::PARAM_STR);
            $stmt->bindValue(':config_value2', $value, PDO::PARAM_STR);
            if ($stmt->execute() === false) {
                $errorInfo = $stmt->errorInfo();
                trigger_error('PDO Error: ' . $stmt->errorCode(). ' ' . $errorInfo[2]);
                exit();
            }

So is there something neater that I'm missing? Or can AXON handle more complex queries?