2016-04-15 03:01:11 +00:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* Provides a database wrapper around the PDO service to help reduce the effort
|
|
|
|
* to interact with a RDBMS such as SQLite, MySQL, or PostgreSQL.
|
|
|
|
*
|
|
|
|
* DB::$c = new PDO($dsn);
|
|
|
|
*
|
|
|
|
* @author David Pennington
|
|
|
|
* @copyright (c) 2012 xeoncross.com
|
|
|
|
* @license MIT License <http://www.opensource.org/licenses/mit-license.php>
|
|
|
|
********************************** 80 Columns *********************************
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace vendor\DB;
|
|
|
|
|
|
|
|
class DB
|
|
|
|
{
|
|
|
|
static $q,$c,$p,$i = '`';
|
|
|
|
|
|
|
|
static $type = "";
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fetch a column offset from the result set (COUNT() queries)
|
|
|
|
*
|
|
|
|
* @param string $query query string
|
|
|
|
* @param array $params query parameters
|
|
|
|
* @param integer $key index of column offset
|
|
|
|
* @return array|null
|
|
|
|
*/
|
|
|
|
static function column($query, $params = NULL, $key = 0)
|
|
|
|
{
|
|
|
|
if($statement = DB::query($query, $params))
|
|
|
|
return $statement->fetchColumn($key);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fetch a single query result row
|
|
|
|
*
|
|
|
|
* @param string $query query string
|
|
|
|
* @param array $params query parameters
|
|
|
|
* @return mixed
|
|
|
|
*/
|
|
|
|
static function row($query, $params = NULL)
|
|
|
|
{
|
|
|
|
if($statement = DB::query($query, $params))
|
|
|
|
return $statement->fetch();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fetches an associative array of all rows as key-value pairs (first
|
|
|
|
* column is the key, second column is the value).
|
|
|
|
*
|
|
|
|
* @param string $query query string
|
|
|
|
* @param array $params query parameters
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
static function pairs($query, $params = NULL)
|
|
|
|
{
|
|
|
|
$data = array();
|
|
|
|
|
|
|
|
if($statement = DB::query($query, $params))
|
|
|
|
while($row = $statement->fetch(\PDO::FETCH_NUM))
|
|
|
|
$data[$row[0]] = $row[1];
|
|
|
|
|
|
|
|
return $data;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fetch all query result rows
|
|
|
|
*
|
|
|
|
* @param string $query query string
|
|
|
|
* @param array $params query parameters
|
|
|
|
* @param int $column the optional column to return
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
static function fetch($query, $params = NULL, $column = NULL)
|
|
|
|
{
|
|
|
|
if( ! $statement = DB::query($query, $params)) return;
|
|
|
|
|
|
|
|
// Return an array of records
|
|
|
|
if($column === NULL) return $statement->fetchAll();
|
|
|
|
|
|
|
|
// Fetch a certain column from all rows
|
|
|
|
return $statement->fetchAll(\PDO::FETCH_COLUMN, $column);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fetch all query result rows as object
|
|
|
|
*
|
|
|
|
* @param string $query query string
|
|
|
|
* @param array $params query parameters
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
static function fetchObject($query, $className, $params = NULL)
|
|
|
|
{
|
|
|
|
/** @var \PDOStatement $statement */
|
|
|
|
if( ! $statement = DB::query($query, $params)) return null;
|
|
|
|
|
|
|
|
return $statement->fetchAll(\PDO::FETCH_CLASS, $className);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prepare and send a query returning the PDOStatement
|
|
|
|
*
|
|
|
|
* @param string $query query string
|
|
|
|
* @param array $params query parameters
|
|
|
|
* @return object|null
|
|
|
|
*/
|
|
|
|
static function query($query, $params = NULL)
|
|
|
|
{
|
|
|
|
$statement = static::$c->prepare(DB::$q[] = strtr($query, '`', DB::$i));
|
|
|
|
$statement->execute($params);
|
|
|
|
return $statement;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Insert a row into the database
|
|
|
|
*
|
|
|
|
* @param string $table name
|
|
|
|
* @param array $data
|
|
|
|
* @return integer|null
|
|
|
|
*/
|
|
|
|
static function insert($table, array $data)
|
|
|
|
{
|
|
|
|
$query = "INSERT INTO`$table`(`" . implode('`,`', array_keys($data))
|
|
|
|
. '`)VALUES(' . rtrim(str_repeat('?,', count($data = array_values($data))), ',') . ')';
|
|
|
|
return DB::$p
|
|
|
|
? DB::column($query . 'RETURNING`id`', $data)
|
|
|
|
: (DB::query($query, $data) ? static::$c->lastInsertId() : NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Update a database row
|
|
|
|
*
|
|
|
|
* @param string $table name
|
|
|
|
* @param array $data
|
|
|
|
* @param array $w where conditions
|
|
|
|
* @return integer|null
|
|
|
|
*/
|
|
|
|
static function update($table, $data, $value, $column = 'id')
|
|
|
|
{
|
|
|
|
$keys = implode('`=?,`', array_keys($data));
|
|
|
|
if($statement = DB::query(
|
|
|
|
"UPDATE`$table`SET`$keys`=? WHERE`$column`=?",
|
|
|
|
array_values($data + array($value))
|
|
|
|
))
|
|
|
|
return $statement->rowCount();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns array containing all field names
|
|
|
|
* @param $table
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
static function getColumns($table) {
|
|
|
|
switch (self::$type) {
|
|
|
|
case "SQLITE":
|
|
|
|
return self::fetch("PRAGMA table_info($table)", null, 1);
|
|
|
|
break;
|
|
|
|
case "MySQL":
|
|
|
|
return self::fetch("DESC $table", null, 0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2014-04-18 03:05:44 +00:00
|
|
|
}
|