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
 ********************************** 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)
    {
        if( ! $statement = DB::query($query, $params)) return null;
 
        $statement->setFetchMode(\PDO::FETCH_INTO, new $className);
        return $statement->fetchAll();
    }
 
    /**
     * 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.14926s using 11 queries.