Esempio n. 1
0
 /**
  * @param	DbRequestInterface $request
  * @return	DbResponseInterface
  */
 public function query(DbRequestInterface $request)
 {
     $mode = MYSQLI_STORE_RESULT;
     if (!$request->isResultBuffer()) {
         $mode = MYSQLI_USE_RESULT;
     }
     switch ($request->getResultType()) {
         /* column names as keys in the result */
         case 'name':
             $type = MYSQLI_ASSOC;
             break;
             /* column position as keys in the result */
         /* column position as keys in the result */
         case 'position':
             $type = MYSQLI_NUM;
             break;
         case 'name-pos':
             $type = MYSQLI_BOTH;
             break;
         default:
             $type = MYSQLI_ASSOC;
     }
     $sql = $request->getSql();
     $filter = $request->getCallback();
     $driver = $this->getDriver();
     try {
         $result = $driver->query($sql, $mode);
     } catch (\Exception $e) {
         $this->addError($e->getMessage(), $e->getCode());
         return false;
     }
     if (!$result instanceof mysqli_result) {
         $this->addError("result not instanceof mysqli_result");
         return false;
     }
     $resultSet = new ResultSet($result);
     $data = $resultSet->fetchAllData($type, $filter);
     if (false === $data) {
         $errText = "{$driver->error} {$drive->sqlstate}";
         $errCode = $driver->errno;
         $this->addError($errText, $errCode);
         return false;
     } else {
         if (true === $data) {
             $data = null;
         }
     }
     return $this->createResponse($data);
 }