Query Builder select method
This commit is contained in:
parent
80b77487eb
commit
c4f1fd3e0d
@ -155,11 +155,19 @@ abstract class DB_PDO extends PDO {
|
|||||||
/**
|
/**
|
||||||
* Surrounds the string with the databases identifier escape characters
|
* Surrounds the string with the databases identifier escape characters
|
||||||
*
|
*
|
||||||
* @param string $ident
|
* @param mixed $ident
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function quote_ident($ident)
|
public function quote_ident($ident)
|
||||||
{
|
{
|
||||||
|
if (is_array($ident))
|
||||||
|
{
|
||||||
|
for($i = 0, $count = count($ident); $i < $count; $i++)
|
||||||
|
{
|
||||||
|
$ident[$i] = $this->quote_ident($ident[$i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Split each identifier by the period
|
// Split each identifier by the period
|
||||||
$hiers = explode('.', $ident);
|
$hiers = explode('.', $ident);
|
||||||
|
|
||||||
|
@ -134,6 +134,14 @@ class MySQL extends DB_PDO {
|
|||||||
*/
|
*/
|
||||||
public function quote_ident($ident)
|
public function quote_ident($ident)
|
||||||
{
|
{
|
||||||
|
if (is_array($ident))
|
||||||
|
{
|
||||||
|
for($i = 0, $count = count($ident); $i < $count; $i++)
|
||||||
|
{
|
||||||
|
$ident[$i] = $this->quote_ident($ident[$i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Split each identifier by the period
|
// Split each identifier by the period
|
||||||
$hiers = explode('.', $ident);
|
$hiers = explode('.', $ident);
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
class Query_Builder {
|
class Query_Builder {
|
||||||
|
|
||||||
private $table, $where_array, $sql;
|
private $table, $where_array, $sql, $select_string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
@ -79,15 +79,19 @@ class Query_Builder {
|
|||||||
{
|
{
|
||||||
$result = $this->db->query($sql);
|
$result = $this->db->query($sql);
|
||||||
}
|
}
|
||||||
else
|
elseif ( ! empty($this->select_string))
|
||||||
{
|
{
|
||||||
$sql = $this->sql->limit($sql, $limit, $offset);
|
// Replace the star with the selected fields
|
||||||
$result = $this->db->query($sql);
|
$sql = str_replace('*', $this->select_string, $sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
//echo $sql."<br />";
|
// Set the limit, if it exists
|
||||||
|
if ($limit !== FALSE)
|
||||||
|
{
|
||||||
|
$sql = $this->sql->limit($sql, $limit, $offset);
|
||||||
|
}
|
||||||
|
|
||||||
return $result;
|
return $this->db->query($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
@ -100,7 +104,33 @@ class Query_Builder {
|
|||||||
*/
|
*/
|
||||||
public function select($fields)
|
public function select($fields)
|
||||||
{
|
{
|
||||||
// @todo Implement select method
|
// Split fields by comma
|
||||||
|
$fields_array = explode(",", $fields);
|
||||||
|
$fields_array = array_map('trim', $fields_array);
|
||||||
|
|
||||||
|
// Split on 'As'
|
||||||
|
foreach ($fields_array as $key => $field)
|
||||||
|
{
|
||||||
|
if (stripos($field, 'as') !== FALSE)
|
||||||
|
{
|
||||||
|
$fields_array[$key] = preg_split('`as`i', $field);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Quote the identifiers
|
||||||
|
$safe_array = array_map(array($this->db, 'quote_ident'), $fields_array);
|
||||||
|
|
||||||
|
// Join the strings back together
|
||||||
|
for($i = 0, $c = count($safe_array); $i < $count; $i++)
|
||||||
|
{
|
||||||
|
if (is_array($safe_array[$i])
|
||||||
|
{
|
||||||
|
$safe_array[$i] = implode(' AS ', $safe_array[$i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->select_string = implode(', ', $safe_array);
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user