/** * @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()); }
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!'; } }
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();
/** * 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; }