Example #1
0
 /**
  * Execute the query
  * 
  * @param string $query
  * @param array $bindings OPTIONAL, but very recommended
  * @param integer $fetchMode pass only PDO::FETCH_* constants
  * @return boolean|int False if query failes; number of affected rows if query passed
  * 
  * @link http://koldy.net/docs/database/basics#query
  * @link http://www.php.net/manual/en/pdo.constants.php
  */
 public function query($query, array $bindings = null, $fetchMode = null)
 {
     $sql = is_object($query) ? $query->__toString() : trim($query);
     $this->lastQuery = $sql;
     $this->lastBindings = $bindings;
     $adapter = $this->getAdapter();
     try {
         $stmt = $adapter->prepare($sql);
     } catch (PDOException $e) {
         // the SQL syntax might fail here
         $this->lastException = $e;
         $this->lastError = $e->getMessage();
         throw $e;
     }
     $stmt->setFetchMode($fetchMode !== null ? $fetchMode : PDO::FETCH_OBJ);
     $logSql = false;
     try {
         if ($bindings === null) {
             $ok = $stmt->execute();
         } else {
             $ok = $stmt->execute($bindings);
         }
         $logSql = true;
     } catch (PDOException $e) {
         $this->lastException = $e;
         $this->lastError = $e->getMessage();
         throw $e;
     }
     $return = null;
     if ($ok) {
         if (strtoupper(substr($sql, 0, 6)) == 'SELECT') {
             $return = $stmt->fetchAll();
         } else {
             $return = (int) $stmt->rowCount();
         }
     } else {
         $return = false;
     }
     if (LOG && $logSql) {
         if ($this->configKey === null) {
             Log::sql($this->__toString());
         } else {
             Log::sql("{$this->configKey}>>{$this->__toString()}");
         }
     }
     return $return;
 }