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