Typo3 Forum für VServer Hosting, RootServer Hosting und Typo3 Webspace.

Unbeantwortetes Thema

Häufig benötigte Datenbank Funktionen in Typo3 Extensions


Autor Nachricht
Verfasst am: 28. 07. 2009 [12:32]
michael
Michael Hoffmann
Dabei seit: 08.06.2008
Beiträge: 37
Das Object $TYPO3_DB ist global als Wrapper (t3lib_DB) instanziiert. Die Ausführung von SQL - Abfragen in Typo3 Extensions sollte komplett darüber erfolgen.

SELECT
t3lib_DB.exec_SELECTquery ($select_fields,$from_table,$where_clause,$groupBy='',$orderBy = '',$limit='')

$select_fields:
Hier stehen die Komma-getrennten Felder der Tabelle (Alternativ Stern für alle Felder).
$from_table:
Der Tabellenname der Typo3 DB
$where_clause:
Optionale Where - Bedingung
$groupBy:
Optionale Group BY Field - Anweisung
$orderBy:
Optionale Order BY Field - Anweisung
$limit:
Optionales Limit der Anzahl Antworten

Bsp: Hier wird der FeUser mit der Email-Adresse $this->piVars['Email'] gesucht.
PHP
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery ('*',
	'fe_users',
	'username =$this->piVars['Email'].'"' );


INSERT
t3lib_DB.exec_INSERTquery($table,$field_values, no_quote_fields=FALSE)
$table:
Name der Tabelle in der Typo3 DB
$field_values:
PHP Array mit den (ausgewählten) Feldnamen der Tabelle und den zugewiesenen Werten
Beispiel:
PHP
$feUserRecord = array (
   'username' => $this->piVars['Email'],
   'password' => md5($this->piVars['Email']),
   'pid' => $this->conf['pid'],
   'usergroup' => $this->conf['usergroup'],
   'name' => $this->piVars['Name'],
   'email' => $this->piVars['Email'],
   'crdate' => mktime(),
   'module_sys_dmail_html' => 1	);
$res = $GLOBALS['TYPO3_DB']->exec_INSERTquery ('fe_users', $feUserRecord);


UPDATE
t3lib_DB.exec_UPDATEquery ($table,$where, $fields_values, $no_Quote_fiels=FALSE)

Beispiel (mit $feUserRecord aus obigem INSERT - Beispiel). Hier wird ein FeUser-Record geändert, und zwar genau dieser auf den die where-Klause username=... zutrifft.
PHP
$res = $GLOBALS['TYPO3_DB']->exec_UPDATEquery ('fe_users',
     'username = "'.$this->piVars['Email'].'"',
     $feUserRecord);


DELETE
t3lib_DB.exec_DELETEquery($table, $where)
Löscht den Datensatz der der where-Klausel entspricht in der Tabelle table.
Beispiel:
PHP
$res=GLOBALS['TYPO3_DB']->exec_UPDATEquery('fe_users', 														'username = "'.trim($this->piVars['Email'].'"');


Weitere SQL - Funktionen aus dem Typo3 API:
t3lib_DB.searchQuery($searchWords, $fields, $table)
Gibt eine where-Klausel zurück. Die Query wird mit AND aus den Werten in dem Array $searchWords gebaut. Die Query bezieht auf irgendein Feld in der kommaseparierten Liste $fields.

t3lib_DB.sql_num_rows($res)
Gibt die Anzahl der gefunden Datensätze nach einer Query zurück.

t3lib_DB.sql_insert_id()
Gibt die ID des autoincrement - Feldes (überlicherweise uid) des zuletzt eingefügten Datensatzes zurück.

t3lib_DB.sql_fetch_row($res)
Gibt ein Array mit numerischen Index zurück indem sich der Datensatz befindet. Es handel sich um eine Wrapper Funktion für mysql_fetch_row().

t3lib_DB.sql_fetch_assoc($res)
Anlog zu t3lib_DB.sql_fetch_row handelt es sich hier um eine Wrapper Funktion für mysql_fetch_assoc().

t3lib_DB.sql_affected_rows()
Auch hier handelt es sich um eine Wrapper - Fuktion für mysql_affected_rows().

t3lib_DB.admin_get_tables()
Gibt ein Array der Tabellen der Typo3 DB zurück. Der Tabellenname ist der Schlüssel des Arrays und die Statusinformationen die dazugehörigen Werte.

t3lib_DB.admin_get_keys($table)
Gibt ein numerisches Array mit den Schlüsseln der Tabelle zurück.

t3lib_DB.admin_get_fields($table)
Gibt ein assoziatives Array (Feldname => Spalte) zurück.