89 lines
2.0 KiB
PHP
89 lines
2.0 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* abtrakte Klasse zur Speicherung in Datenbank
|
||
|
*
|
||
|
* @version 0.2
|
||
|
*/
|
||
|
abstract class fl_data_access_database {
|
||
|
protected $lastSQL;
|
||
|
protected $allSQL = array();
|
||
|
protected $query_count = 0;
|
||
|
|
||
|
public $show_errors = false;
|
||
|
|
||
|
/**
|
||
|
* Anzahl der Datensätze mit bestimmter Bedingung zurückgeben
|
||
|
*
|
||
|
* @param string $table Tabelle in der DB
|
||
|
* @param string $condition Bedingung, die überprüft werden soll, optional
|
||
|
* @return integer
|
||
|
*/
|
||
|
public function count($table, $condition='') {
|
||
|
$result = $this->retrieve($table, 'COUNT(*) AS anzahl', $condition);
|
||
|
$anzahl = (integer) $result[0]['anzahl'];
|
||
|
return $anzahl;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* ID holen
|
||
|
*
|
||
|
* @param string $table Tabelle in der DB
|
||
|
* @param string $condition Bedingung, mit der gesucht werden
|
||
|
* @return integer
|
||
|
*/
|
||
|
public function find_id($table, $condition) {
|
||
|
$result = $this->retrieve($table, 'id', $condition);
|
||
|
$id = (integer) $result['id'];
|
||
|
return $id;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Zuletzt einfügte ID zurückgeben
|
||
|
*
|
||
|
* @param string $table
|
||
|
* @return integer
|
||
|
*/
|
||
|
abstract public function last_insert_id($table);
|
||
|
|
||
|
/**
|
||
|
* Eindeutigen Bezeichner für eine Tabelle zurückgeben
|
||
|
*
|
||
|
* @param string $table
|
||
|
* @return string
|
||
|
*/
|
||
|
abstract public function get_table_name($table);
|
||
|
|
||
|
/**
|
||
|
* Datenbankabfragen loggen
|
||
|
*/
|
||
|
protected function log_query($sql) {
|
||
|
$this->lastSQL = $sql;
|
||
|
$this->allSQL[] = $sql;
|
||
|
$this->query_count++;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Fehlermeldungen ausgeben und Ausführung stoppen
|
||
|
*
|
||
|
* @param string $error
|
||
|
* @param string $sql
|
||
|
*/
|
||
|
protected function error($error, $sql) {
|
||
|
if ( $this->show_errors OR
|
||
|
( error_reporting() > 0 AND ini_get('display_errors') == 1 ) ) {
|
||
|
$factory = new fl_factory();
|
||
|
$err = $factory->get_helper('var_analyze', 'data-access', 'Fehler');
|
||
|
$err->sql($sql, 'Datenbankabfrage, die zu Fehler gefuehrt hat');
|
||
|
|
||
|
/**
|
||
|
* Um mehr Informationen mit xDebug erhalten zu koennen,
|
||
|
* das Datenbankobjekt in den lokalen Scope holen
|
||
|
*/
|
||
|
$database_object = $this;
|
||
|
}
|
||
|
|
||
|
throw new Exception($error);
|
||
|
}
|
||
|
}
|
||
|
?>
|