Exemplo n.º 1
0
function gGetDb($db = "acc")
{
    global $accdbobjects;
    if (!is_array($accdbobjects)) {
        $accdbobjects = array();
    }
    if (!isset($accdbobjects[$db])) {
        global $cDatabaseConfig;
        if (!array_key_exists($db, $cDatabaseConfig)) {
            trigger_error("Database configuration not found for alias {$db}");
            die;
        }
        try {
            $accdbobject = new PdoDatabase($cDatabaseConfig[$db]["dsrcname"], $cDatabaseConfig[$db]["username"], $cDatabaseConfig[$db]["password"]);
        } catch (PDOException $ex) {
            // wrap around any potential stack traces which may include passwords
            throw new Exception("Error connectiong to database '{$db}': " . $ex->getMessage());
        }
        $accdbobject->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        // emulating prepared statements gives a performance boost on MySQL.
        //
        // however, our version of PDO doesn't seem to understand parameter types when emulating
        // the prepared statements, so we're forced to turn this off for now.
        // -- stw 2014-02-11
        $accdbobject->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
        $accdbobjects[$db] = $accdbobject;
    }
    return $accdbobjects[$db];
}
Exemplo n.º 2
0
 /**
  * @param string $connectionName
  * @return PdoDatabase
  * @throws Exception
  */
 public static function getDatabaseConnection($connectionName)
 {
     if (!isset(self::$connections[$connectionName])) {
         global $cDatabaseConfig;
         if (!array_key_exists($connectionName, $cDatabaseConfig)) {
             throw new Exception("Database configuration not found for alias {$connectionName}");
         }
         try {
             $databaseObject = new PdoDatabase($cDatabaseConfig[$connectionName]["dsrcname"], $cDatabaseConfig[$connectionName]["username"], $cDatabaseConfig[$connectionName]["password"]);
         } catch (PDOException $ex) {
             // wrap around any potential stack traces which may include passwords
             throw new Exception("Error connecting to database '{$connectionName}': " . $ex->getMessage());
         }
         $databaseObject->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
         // emulating prepared statements gives a performance boost on MySQL.
         //
         // however, our version of PDO doesn't seem to understand parameter types when emulating
         // the prepared statements, so we're forced to turn this off for now.
         // -- stw 2014-02-11
         $databaseObject->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
         self::$connections[$connectionName] = $databaseObject;
     }
     return self::$connections[$connectionName];
 }