/**
  * {@inheritdoc}
  */
 public function query($query, $resultsetType = Resultset::TYPE_ARRAY)
 {
     // This error may happen with the libmysql instead of mysqlnd and using set statement (set @test=1)
     // : "Attempt to read a row while there is no result set associated with the statement"
     try {
         /**
          * @var \Doctrine\DBAL\Driver\Mysqli\MysqliStatement
          */
         $r = $this->dbal->query($query);
         $results = new Resultset($resultsetType);
         if ($r === false) {
             throw new Exception\InvalidArgumentException("Query cannot be executed [{$query}].");
         } else {
             if ($r->columnCount() > 0) {
                 while ($row = $r->fetch()) {
                     $results->append((array) $row);
                 }
             }
         }
     } catch (\Exception $e) {
         $msg = "Doctrine\\Dbal2 adapter query error: {$e->getMessage()} [{$query}]";
         throw new Exception\InvalidArgumentException($msg);
     }
     return $results;
 }
Пример #2
0
 /**
  * {@inheritdoc}
  */
 public function query($query, $resultsetType = Resultset::TYPE_ARRAY)
 {
     try {
         //$query = "select * from product";
         $stmt = $this->resource->prepare($query);
         if ($stmt === false) {
             $error = $this->resource->errorInfo();
             throw new Exception\InvalidArgumentException($error[2]);
         }
         if (!$stmt->execute()) {
             throw new Exception\InvalidArgumentException('Statement could not be executed (' . implode(' - ', $this->resource->errorInfo()) . ')');
         }
         $results = new Resultset($resultsetType);
         if ($stmt->columnCount() > 0) {
             while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) {
                 $results->append($row);
             }
         }
         $stmt->closeCursor();
     } catch (Exception\InvalidArgumentException $e) {
         throw $e;
     } catch (\Exception $e) {
         $eclass = get_class($e);
         $msg = "GenericPdo '{$eclass}' : {$e->getMessage()} [{$query}]";
         throw new Exception\InvalidArgumentException($msg);
     }
     return $results;
 }
 /**
  * {@inheritdoc}
  */
 public function query($query, $resultsetType = Resultset::TYPE_ARRAY)
 {
     try {
         //$r = $this->zendAdapter->query($query, \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
         $r = $this->zendAdapter->query($query)->execute();
         $results = new Resultset($resultsetType);
         if ($r === false) {
             throw new Exception\InvalidArgumentException('Query could not be executed ([$query])');
         } elseif ($r instanceof \Zend\Db\ResultSet\ResultSet) {
             foreach ($r as $row) {
                 $results->append((array) $row);
             }
         } elseif ($r instanceof \Zend\Db\Adapter\Driver\ResultInterface && $r->getFieldCount() > 0) {
             foreach ($r as $row) {
                 $results->append($row);
             }
         }
     } catch (\Exception $e) {
         $msg = "ZendDb2 adapter query error: {$e->getMessage()} [{$query}]";
         throw new Exception\InvalidArgumentException($msg);
     }
     return $results;
 }
 /**
  * {@inheritdoc}
  */
 public function query($query, $resultsetType = Resultset::TYPE_ARRAY)
 {
     try {
         //$r = $this->resource->query($query, MYSQLI_STORE_RESULT);
         $r = $this->resource->query($query, MYSQLI_STORE_RESULT);
         $results = new Resultset($resultsetType);
         if ($r === false) {
             throw new Exception\InvalidArgumentException("Query cannot be executed [{$query}].");
         } elseif ($r !== true && !$r instanceof \mysqli_result) {
             throw new Exception\InvalidArgumentException("Query didn't return any result [{$query}].");
         } elseif ($r instanceof \mysqli_result) {
             while ($row = $r->fetch_assoc()) {
                 $results->append($row);
             }
             $r->close();
         }
     } catch (Exception\InvalidArgumentException $e) {
         throw $e;
     } catch (\Exception $e) {
         $msg = "MysqliException: {$e->getMessage()} [{$query}]";
         throw new Exception\InvalidArgumentException($msg);
     }
     return $results;
 }