TYPO3 - Datenbankabfragen in Extensions
Aus Wikizone
Version vom 19. Juni 2007, 13:31 Uhr von 193.196.133.66 (Diskussion)
DB-Abfragen in Typo3 auf eine MySQL Datenbank erfolgen über den Datenbank Abstraction Layer (DBAL,DAL). Erweiterungen ermöglichen eine Abfrage auch auf andere Datenbanken.
t3lib/class.t3lib_db.php
Die Instanz der Klasse steht im Front und Backend unter $GLOBALS['TYPO3_DB'] zur Verfügung. Der Aufruf erfolgt z.B. so:
$GLOBALS['TYPO3_DB']->sql_query(meineParameter);
Es sind auch komplexe Datenbankabfragen möglich z.B. eine Abfrage die über zwei Tabellen geht die über eine mm Verbindung verknüpft sind. Dies erfolgt mit dem Befehl:
$GLOBALS['TYPO3_DB']->exec_SELECT_mm_query($select,$local_table,$mm_table,$foreign_table,$whereClause=,$groupBy=,$orderBy=,$limit=)
Allgemein
exec_SELECTquery( '...', # hier alle Felder 'tabelle1 a,tabelle2 b,tabelle3 c', #hier die Tabellen 'a.feld=b.uid and b.feld=c.uid ...', #die Zuordnung und sonstige wheres '','','');
Beispiele
// SELECT:
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
'*', // SELECT ...
'mytable', // FROM ...
'uid=123 AND title LIKE "%blabla%"', // WHERE...
'', // GROUP BY...
'title', // ORDER BY...
'5,10' // LIMIT to 10 rows, starting with number 5 (MySQL compat.)
);
// INSERT:
$insertArray = array(
'pid' => 123,
'title' => "My Title"
);
$res = $GLOBALS['TYPO3_DB']->exec_INSERTquery('mytable', $insertArray);
// UPDATE:
$updateArray = array(
'title' => "My Title"
);
$res = $GLOBALS['TYPO3_DB']->exec_UPDATEquery('mytable', 'uid=123', $updateArray);
// DELETE
$res = $GLOBALS['TYPO3_DB']->exec_DELETEquery('mytable', 'uid=123');
$res=$GLOBALS['TYPO3_DB']->exec_SELECTquery( 'COUNT(ap-status)', //felder 'aa_tagungen', //from 'id= '.$_GET[tid].'', //where 'ap-status', //group '', //order '' //limit ); $l = mysql_fetch_array($res);
Zum Debuggen kann man so den Query testen:
t3lib_div::debug($GLOBALS['TYPO3_DB']->SELECTquery( 'COUNT(ap-status)', //felder 'aa_tagungen', //from 'id= '.$_GET[tid].'', //where 'ap-status', //group '', //order '' //limit ));