SQL-Funktionen des TYPO3-PHP-Frameworks
Das PHP-Framework von TYPO3 bietet einfache Funktionen für das Ausführen von SQL-Kommandos, die den Zusammenbau der einzelnen SQL-Statements übernehmen. Nähere Informationen und weitere nützliche Funktionen, wie z.B.: searchQuery() finden sich in der offiziellen TYPO3-Klassen-Dokumentation api.typo3.org/typo3cms/47/html/classt3lib___d_b.html.
Funktionen
insert
$result = exec_INSERTquery(
'table',
array('field' => 'value')
);
update
$result = exec_UPDATEquery(
'table',
'where',
array('field' => 'value')
);
delete
$result = exec_DELETEquery(
'table',
'where'
);
select
$result = exec_SELECTquery(
'fields',
'table',
'where',
'groupBy (optional)',
'orderBy (optional)',
'limit (optional)'
);
SELECTgetRows
Liefert anstelle eines Result-Pointers ein Array mit den angeforderten Werten zurück.
$result = exec_SELECTgetRows(
'fields',
'table',
'where',
'groupBy (optional)',
'orderBy (optional)',
'limit (optional)'
);
Debuggen
Um sich den durch die Funktionen genertierten SQL-Befehl ausgeben zu lassen, reicht es bei der jeweiligen Funktion das exec_ wegzulassen. Dadurch liefert die Funktion das generierte Statement retour.
$result = $GLOBALS['TYPO3_DB']->SELECTquery(
'field',
'table',
'where'
);
t3lib_div::debug($result);
Beispielcode
select
$result = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
'fields',
'table',
'where'
);
if ($GLOBALS['TYPO3_DB']->sql_num_rows($result)) {
while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($result)){
t3lib_div::debug($row);
}
}
delete
$result = $GLOBALS['TYPO3_DB']->exec_DELETEquery(
'table',
'where'
);
if($GLOBALS['TYPO3_DB']->sql_affected_rows($result) > 0) {
echo 'rows successfully deleted';
}
select mit Übersetzung im Fallback-Mode
Dieses Statement holt die Daten in der Standardsprache und überschreibt diese mit eventuell vorhandenen Übersetzungen.
/* create statement */
$fields = 'uid, pid, sys_language_uid, title'
$table = 'tx_ext_table';
// get default language element
$where = 'uid = ' . $this->piVars['uid'] . ' AND sys_language_uid = 0';
// use typo3-function for adding exclude fields (hidden = 0, deleted = 0, group and date statements)
$where .= $GLOBALS['TSFE']->sys_page->enableFields($table);
$order = '';
$group = '';
$limit = '';
/* exec sql-command */
$result = $GLOBALS['TYPO3_DB']->exec_SELECTquery($fields, $table, $where, $group, $order, $limit);
$data = array();
if($GLOBALS['TYPO3_DB']->sql_num_rows($result)){
while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc(result)){
$orig_uid = $row['uid'];
// get translation
if($GLOBALS['TSFE']->sys_language_uid != 0) {
$subresult = $GLOBALS['TYPO3_DB']->exec_SELECTquery($fields, $table, 'sys_language_uid = ' . $GLOBALS['TSFE']->sys_language_uid . ' AND l18n_parent = ' . $row['uid'] . ' AND pid = ' . $row['pid']);
if($GLOBALS['TYPO3_DB']->sql_num_rows($result)){
if($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc(result)){
foreach($row as $field => $value){
if($value) {
$row[$field] = $value;
}
}
}
}
}
// write data to array
$row['uid'] = $orig_uid;
$data = $row;
}
}
/* process data */
t3lib_div::debug($data);
Die Übersetzung des Content-Elements kann auch mit einer speziellen TYPO3-Funktion erfolgen. Diese Berücksichtigt allerdings den global eingestellten Content-Fallback-Mode.
$row = $GLOBALS['TSFE']->sys_page->getRecordOverlay($table, $row, $GLOBALS['TSFE']->sys_language_content, $GLOBALS['TSFE']->sys_language_contentOL);