Ejemplo n.º 1
0
 /**
  * Executes the SQL query.
  * @param  string      SQL statement.
  * @return Dibi\ResultDriver|NULL
  * @throws Dibi\DriverException
  */
 public function query($sql)
 {
     if ($this->buffered) {
         $res = @mysql_query($sql, $this->connection);
         // intentionally @
     } else {
         $res = @mysql_unbuffered_query($sql, $this->connection);
         // intentionally @
     }
     if ($code = mysql_errno($this->connection)) {
         throw MySqliDriver::createException(mysql_error($this->connection), $code, $sql);
     } elseif (is_resource($res)) {
         return $this->createResultDriver($res);
     }
 }
Ejemplo n.º 2
0
 /**
  * Executes the SQL query.
  * @param  string      SQL statement.
  * @return Dibi\ResultDriver|NULL
  * @throws Dibi\DriverException
  */
 public function query($sql)
 {
     // must detect if SQL returns result set or num of affected rows
     $cmd = strtoupper(substr(ltrim($sql), 0, 6));
     static $list = ['UPDATE' => 1, 'DELETE' => 1, 'INSERT' => 1, 'REPLAC' => 1];
     $this->affectedRows = FALSE;
     if (isset($list[$cmd])) {
         $this->affectedRows = $this->connection->exec($sql);
         if ($this->affectedRows !== FALSE) {
             return;
         }
     } else {
         $res = $this->connection->query($sql);
         if ($res) {
             return $this->createResultDriver($res);
         }
     }
     list($sqlState, $code, $message) = $this->connection->errorInfo();
     $message = "SQLSTATE[{$sqlState}]: {$message}";
     switch ($this->driverName) {
         case 'mysql':
             throw MySqliDriver::createException($message, $code, $sql);
         case 'oci':
             throw OracleDriver::createException($message, $code, $sql);
         case 'pgsql':
             throw PostgreDriver::createException($message, $sqlState, $sql);
         case 'sqlite':
             throw Sqlite3Driver::createException($message, $code, $sql);
         default:
             throw new Dibi\DriverException($message, $code, $sql);
     }
 }