Example #1
0
 /**
  * The MySQL PDO driver has issues if you try to reuse a prepared statement
  * without any placeholders.
  * 
  * @return void
  */
 private function regenerateStatement()
 {
     $is_pdo = $this->database->getExtension() == 'pdo';
     $is_mysql = $this->database->getType() == 'mysql';
     if ($this->placeholders || !$is_pdo || !$is_mysql) {
         return;
     }
     $this->statement = $this->database->getConnection()->prepare($this->sql);
 }
 /**
  * Adds a number of math functions to SQLite that MSSQL, MySQL and PostgreSQL have by default
  * 
  * @return void
  */
 private function createSQLiteFunctions()
 {
     $function = array();
     $functions[] = array('acos', 'acos', 1);
     $functions[] = array('asin', 'asin', 1);
     $functions[] = array('atan', 'atan', 1);
     $functions[] = array('atan2', 'atan2', 2);
     $functions[] = array('ceil', 'ceil', 1);
     $functions[] = array('ceiling', 'ceil', 1);
     $functions[] = array('cos', 'cos', 1);
     $functions[] = array('cot', array('fSQLTranslation', 'sqliteCotangent'), 1);
     $functions[] = array('degrees', 'rad2deg', 1);
     $functions[] = array('exp', 'exp', 1);
     $functions[] = array('floor', 'floor', 1);
     $functions[] = array('ln', 'log', 1);
     $functions[] = array('log', array('fSQLTranslation', 'sqliteLogBaseFirst'), 2);
     $functions[] = array('ltrim', 'ltrim', 1);
     $functions[] = array('pi', 'pi', 0);
     $functions[] = array('power', 'pow', 2);
     $functions[] = array('radians', 'deg2rad', 1);
     $functions[] = array('rtrim', 'rtrim', 1);
     $functions[] = array('sign', array('fSQLTranslation', 'sqliteSign'), 1);
     $functions[] = array('sqrt', 'sqrt', 1);
     $functions[] = array('sin', 'sin', 1);
     $functions[] = array('tan', 'tan', 1);
     $functions[] = array('trim', 'trim', 1);
     if ($this->database->getExtension() == 'sqlite') {
         $functions[] = array('current_date', array('fSQLTranslation', 'sqliteDate'), 0);
         $functions[] = array('current_time', array('fSQLTranslation', 'sqliteTime'), 0);
         $functions[] = array('current_timestamp', array('fSQLTranslation', 'sqliteTimestamp'), 0);
     }
     foreach ($functions as $function) {
         if ($this->database->getExtension() == 'pdo') {
             $this->database->getConnection()->sqliteCreateFunction($function[0], $function[1], $function[2]);
         } else {
             sqlite_create_function($this->database->getConnection(), $function[0], $function[1], $function[2]);
         }
     }
 }
Example #3
0
 /**
  * Adds a number of math functions to SQLite that MSSQL, MySQL and PostgreSQL have by default
  * 
  * @return void
  */
 private function createSQLiteFunctions()
 {
     $function = array();
     $functions[] = array('acos', 'acos', 1);
     $functions[] = array('asin', 'asin', 1);
     $functions[] = array('atan', 'atan', 1);
     $functions[] = array('atan2', 'atan2', 2);
     $functions[] = array('ceil', 'ceil', 1);
     $functions[] = array('ceiling', 'ceil', 1);
     $functions[] = array('cos', 'cos', 1);
     $functions[] = array('cot', array('fSQLTranslation', 'sqliteCotangent'), 1);
     $functions[] = array('degrees', 'rad2deg', 1);
     $functions[] = array('exp', 'exp', 1);
     $functions[] = array('floor', 'floor', 1);
     $functions[] = array('ln', 'log', 1);
     $functions[] = array('log', array('fSQLTranslation', 'sqliteLogBaseFirst'), 2);
     $functions[] = array('ltrim', 'ltrim', 1);
     $functions[] = array('pi', 'pi', 0);
     $functions[] = array('power', 'pow', 2);
     $functions[] = array('radians', 'deg2rad', 1);
     $functions[] = array('rtrim', 'rtrim', 1);
     $functions[] = array('sign', array('fSQLTranslation', 'sqliteSign'), 1);
     $functions[] = array('sqrt', 'sqrt', 1);
     $functions[] = array('sin', 'sin', 1);
     $functions[] = array('tan', 'tan', 1);
     $functions[] = array('trim', 'trim', 1);
     if ($this->database->getExtension() == 'sqlite') {
         $functions[] = array('current_date', array('fSQLTranslation', 'sqliteDate'), 0);
         $functions[] = array('current_time', array('fSQLTranslation', 'sqliteTime'), 0);
         $functions[] = array('current_timestamp', array('fSQLTranslation', 'sqliteTimestamp'), 0);
         // If SQLite was compiled with ISO-8859-* string handling, we override as best we can
         // with custom functions that return the correct values. We can't fix LIKE and GLOB
         // but they don't matter as much since the encoding only affects case transformations.
         if (strtolower(sqlite_libencoding()) != 'utf-8') {
             $functions[] = array('length', array('fSQLTranslation', 'sqliteLength'), 1);
             $functions[] = array('substr', array('fSQLTranslation', 'sqliteSubstr'), 3);
         }
     }
     foreach ($functions as $function) {
         if ($this->database->getExtension() == 'pdo') {
             $this->database->getConnection()->sqliteCreateFunction($function[0], $function[1], $function[2]);
         } else {
             sqlite_create_function($this->database->getConnection(), $function[0], $function[1], $function[2]);
         }
     }
 }