/**
  * @covers QueryPager::getQuery
  * @covers QueryPager::__construct
  */
 public function testGetQueryWithNullPagingInfo()
 {
     $sql = "SELECT * FROM office";
     $excepted = "SELECT * FROM office";
     $pager = new \QueryPager($sql, null);
     $this->assertEquals($excepted, $pager->getQuery());
 }
Exemple #2
0
 public function query($query, $paging = null)
 {
     $this->paging = $paging;
     if ($query != NULL) {
         $queryPager = new QueryPager($query, $paging);
         $startTime = microtime(true);
         if ($this->debugOn) {
             Logger::debug("SQL: {$query}");
         }
         $this->query_result = mysql_query($queryPager->getQuery(), $this->connect_id);
         $endTime = microtime(true);
         if (!$this->query_result) {
             throw new SQLException(mysql_error() . "\nSQL: " . $query . "\n");
         } else {
             if ($this->debugOn) {
                 $timeDiff = $endTime - $startTime;
                 Logger::debug("Query completed in " . number_format($timeDiff, 2) . " seconds.");
             }
             return $this->query_result;
         }
     } else {
         return '<b>MySQL Error</b>: Empty Query!';
     }
 }
Exemple #3
0
 public function testConstructorAutoDetectsClassName()
 {
     $q = new Query('my_schema.selectable_table');
     $qp = new QueryPager($q);
     $this->assertEquals('SelectableTable', $qp->getClass());
 }
<?php

//New query
$q = new Query();
$q->add('Column', 'Value');
//Limit results per page
$limit = 50;
//Specify the current page
$page = 2;
//Create instance of pager, provide the name of the DABL class
$pager = new QueryPager($q, $limit, $page, 'Inspection');
//Retrieve an array of Objects from the DABL class for that page
$inspections = $pager->fetchPage();
<?php

//New query with table name $q = new Query('Client');
$q->add('Column', 'Value');
//Limit results per page
$limit = 50;
//Specify the current page
$page = 3;
//Create instance of pager
$pager = new QueryPager($q, $limit, $page);
//Retrieve PDOStatement with results for that page
$resultSet = $pager->fetchPage();
Exemple #6
0
 /**
  * Prepare the given query for execution.
  *
  * @param SQLBuilder|String $sql can be either:
  *          a. SQLBuilder: in which case it may contain parameters prepared
  *             statements.
  *          b. String: Plain SQL.
  * @param PagingInfo $paging
  * @return mysqli_stmt
  * @throws
  */
 public function prepare($sql, $paging = null)
 {
     if (!$sql) {
         throw new SQLException("Empty query");
     }
     # Keep the PagingInfo so we can set total rows later on.
     $this->paging = $paging;
     $queryPager = new QueryPager($sql, $paging);
     if ($this->debugOn) {
         Logger::debug("SQL: {$sql}");
     }
     # Create a prepared statement
     $stmt = $this->db->prepare($queryPager->getQuery());
     if (!$stmt) {
         throw new SQLException($this->db->error);
     }
     # Bind parameters, if there are any
     if ($sql instanceof SQLBuilder && $sql->hasParams()) {
         $refArgs = array($sql->getParamTypes());
         foreach ($sql->getParamList() as $param) {
             $refArgs[] = $param;
         }
         // Modify the values in the array to be referenced (ugly, but works).
         for ($i = 1; $i < count($refArgs); $i++) {
             $refArgs[$i] =& $refArgs[$i];
         }
         call_user_func_array(array($stmt, 'bind_param'), $refArgs);
         if ($this->debugOn) {
             Logger::debug("Query params: " . var_export($refArgs, true));
         }
     }
     return $stmt;
 }