2erlei/fl/data/access/database.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);
}
}
?>