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