kritbit

kritbit Git Source Tree


Root/web/system/vendor/DB.php

<?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;
		}
	}
}

Archive Download this file

Branches

Number of commits:
Page rendered in 0.06142s using 11 queries.