127 lines
2.5 KiB
PHP
127 lines
2.5 KiB
PHP
<?php
|
|
/**
|
|
* Singleton-Klasse zur Herstellung der Datenbank-Verbindung
|
|
*
|
|
* @author Christian Steinle
|
|
* @date 02.08.2016
|
|
*
|
|
* @copyright CS medien- & kommunikationssysteme (http://www.steinle-computer.de)
|
|
*/
|
|
|
|
namespace Helper;
|
|
|
|
use mysqli;
|
|
|
|
|
|
class Database
|
|
{
|
|
/**
|
|
* Name der Datenbank-Tabelle für das Entsprechende Modell
|
|
*/
|
|
const TBL_NAME = '';
|
|
|
|
/**
|
|
* Name des Datenbank-Feldes mit dem PrimaryKey
|
|
*/
|
|
const PRIMARY_KEY = '';
|
|
|
|
/**
|
|
* Sortierung der Elemente für die Methode getIndex
|
|
*/
|
|
const ORDER_BY = '';
|
|
|
|
/**
|
|
* Der Filter für den Aufruf von getIndex()
|
|
* @var string
|
|
*/
|
|
static $filter = '1=1';
|
|
|
|
/**
|
|
* Hier werden die Daten von getIndex() gespeichert
|
|
* @var array
|
|
*/
|
|
static $data = array();
|
|
|
|
/**
|
|
* @var \mysqli|null
|
|
*/
|
|
protected static $db = null;
|
|
|
|
|
|
protected function __construct()
|
|
{
|
|
}
|
|
|
|
|
|
protected function __clone()
|
|
{
|
|
}
|
|
|
|
|
|
/**
|
|
* Stellt die Datenbank-Verbindung her
|
|
*
|
|
* return void
|
|
*/
|
|
final protected static function getInstance()
|
|
{
|
|
if (null === self::$db)
|
|
{
|
|
self::$db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
|
|
self::$db->set_charset('utf8');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Liefert ein assoziatives Array des Datensatzes mit der übergebenen ID
|
|
*
|
|
* @param int $id
|
|
* @return array
|
|
*/
|
|
final public static function getItem($id)
|
|
{
|
|
$sql = 'SELECT * FROM ' . static::TBL_NAME . ' WHERE ' . static::PRIMARY_KEY . ' = ' . $id . ';';
|
|
$data = self::query($sql);
|
|
return (!is_array($data) || empty($data)) ? array() : current($data);
|
|
}
|
|
|
|
|
|
/**
|
|
* Liefert ein mehrdimensionales, assoziatives Array mit allen Datensätzen, die zum Filter passen
|
|
* als Schlüssel der ersten Dimension dient der Wert des Primär-Schlüssels der Datenbank-Tabelle
|
|
* Legt alle Daten in self::$data ab
|
|
*
|
|
* @see self::query()
|
|
* @see self::$data
|
|
*
|
|
* @return array
|
|
*/
|
|
final public static function getIndex()
|
|
{
|
|
$sql = 'SELECT * FROM ' . static::TBL_NAME . ' WHERE ' . static::$filter . ' ' . static::ORDER_BY . ';';
|
|
self::$data = self::query($sql);
|
|
return self::$data;
|
|
}
|
|
|
|
|
|
/**
|
|
* Liefert ein mehrdimensionales, assoziatives Array mit allen Datensätzen, die zum SQL-Query passen
|
|
* als Schlüssel der ersten Dimension dient der Wert des Primär-Schlüssels der Datenbank-Tabelle
|
|
*
|
|
* @param string $sql
|
|
* @return array
|
|
*/
|
|
final protected static function query($sql)
|
|
{
|
|
self::getInstance();
|
|
$result = self::$db->query($sql);
|
|
$data = array();
|
|
while ($tmpData = $result->fetch_assoc())
|
|
{
|
|
$data[$tmpData[static::PRIMARY_KEY]] = $tmpData;
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
} |