<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=91.47.51.180</id>
	<title>Wikizone - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=91.47.51.180"/>
	<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Spezial:Beitr%C3%A4ge/91.47.51.180"/>
	<updated>2026-05-06T17:56:49Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=TYPO3_-_Datenbankabfragen_in_Extensions&amp;diff=18563</id>
		<title>TYPO3 - Datenbankabfragen in Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=TYPO3_-_Datenbankabfragen_in_Extensions&amp;diff=18563"/>
		<updated>2009-05-28T11:27:32Z</updated>

		<summary type="html">&lt;p&gt;91.47.51.180: /* Über piBase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Datenbankabfrage über piBase ==&lt;br /&gt;
Viel Arbeit nimmt einem der Zugriff über das piBase Objekt ab. Im Endeffekt greift es auf das Globale Datenbankobjekt zu (siehe unten) stellt aber schon einige Vordefinierte Funktjionien zur Verfügung. Beispielsweise muß man sich dann nicht mehr um Versteckte Datensätze, Start, Stop Zeiten etc. kümmern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
plugin.tx_gbcamps_pi1 {&lt;br /&gt;
    #CMD =&lt;br /&gt;
    pidList = 36&lt;br /&gt;
    #pidSingle =&lt;br /&gt;
    recursive = 1&lt;br /&gt;
    #templateFile = EXT:gbcamps/res/template.html&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Auskommentierten Werte sind ebenfalls sinnvolle Werte für den Start.&lt;br /&gt;
&lt;br /&gt;
Die Funktion zum Abfragen ist&lt;br /&gt;
 pi_exec_query($table,$count=0,$addWhere=&amp;#039;&amp;#039;,$mm_cat=&amp;#039;&amp;#039;,$groupBy=&amp;#039;&amp;#039;,$orderBy=&amp;#039;&amp;#039;,$query=&amp;#039;&amp;#039;) &lt;br /&gt;
&lt;br /&gt;
Interessant ist die Tatsache, das die Funktion auf die Parameter des Array $this-&amp;gt;internal zugreifen kann, das Angaben über die aktuelle Position im Abfrageergebnis etc. enthält. So kann die Abfrage allein über den Tabellennamen als Parameter gestartet werden.&lt;br /&gt;
=== Voraussetzung ===&lt;br /&gt;
In der TypoScript Konfiguration sollten die Werte:&lt;br /&gt;
&lt;br /&gt;
== Über das Globale Datenbankobjekt ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 t3lib/class.t3lib_db.php&lt;br /&gt;
Die Instanz der Klasse steht im Front und Backend unter $GLOBALS[&amp;#039;TYPO3_DB&amp;#039;] zur Verfügung. Der Aufruf erfolgt z.B. so:&lt;br /&gt;
 $GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;sql_query(meineParameter);&lt;br /&gt;
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:&lt;br /&gt;
 $GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;exec_SELECT_mm_query($select,$local_table,$mm_table,$foreign_table,$whereClause=&amp;#039;&amp;#039;,$groupBy=&amp;#039;&amp;#039;,$orderBy=&amp;#039;&amp;#039;,$limit=&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
exec_SELECTquery(&lt;br /&gt;
&amp;#039;...&amp;#039;, # hier alle Felder&lt;br /&gt;
&amp;#039;tabelle1 a,tabelle2 b,tabelle3 c&amp;#039;, #hier die Tabellen&lt;br /&gt;
&amp;#039;a.feld=b.uid and b.feld=c.uid ...&amp;#039;, #die Zuordnung und sonstige wheres&lt;br /&gt;
&amp;#039;&amp;#039;,&amp;#039;&amp;#039;,&amp;#039;&amp;#039;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SELECT:&lt;br /&gt;
$res = $GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;exec_SELECTquery(&lt;br /&gt;
                &amp;#039;*&amp;#039;,         // SELECT ...&lt;br /&gt;
                &amp;#039;mytable&amp;#039;,     // FROM ...&lt;br /&gt;
                &amp;#039;uid=123 AND title LIKE &amp;quot;%blabla%&amp;quot;&amp;#039;,    // WHERE...&lt;br /&gt;
                &amp;#039;&amp;#039;,            // GROUP BY...&lt;br /&gt;
                &amp;#039;title&amp;#039;,    // ORDER BY...&lt;br /&gt;
                &amp;#039;5,10&amp;#039;            // LIMIT to 10 rows, starting with number 5 (MySQL compat.)&lt;br /&gt;
            );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// INSERT:&lt;br /&gt;
$insertArray = array(&lt;br /&gt;
    &amp;#039;pid&amp;#039; =&amp;gt; 123,&lt;br /&gt;
    &amp;#039;title&amp;#039; =&amp;gt; &amp;quot;My Title&amp;quot;&lt;br /&gt;
);&lt;br /&gt;
$res = $GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;exec_INSERTquery(&amp;#039;mytable&amp;#039;, $insertArray);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// UPDATE:&lt;br /&gt;
$updateArray = array(&lt;br /&gt;
    &amp;#039;title&amp;#039; =&amp;gt; &amp;quot;My Title&amp;quot;&lt;br /&gt;
);&lt;br /&gt;
$res = $GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;exec_UPDATEquery(&amp;#039;mytable&amp;#039;, &amp;#039;uid=123&amp;#039;, $updateArray);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// DELETE&lt;br /&gt;
$res = $GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;exec_DELETEquery(&amp;#039;mytable&amp;#039;, &amp;#039;uid=123&amp;#039;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$res=$GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;exec_SELECTquery(&lt;br /&gt;
  &amp;#039;COUNT(ap-status)&amp;#039;,     //felder&lt;br /&gt;
  &amp;#039;aa_tagungen&amp;#039;,              //from&lt;br /&gt;
  &amp;#039;id= &amp;#039;.$_GET[tid].&amp;#039;&amp;#039;,         //where&lt;br /&gt;
  &amp;#039;ap-status&amp;#039;,    //group&lt;br /&gt;
  &amp;#039;&amp;#039;,         //order&lt;br /&gt;
  &amp;#039;&amp;#039;          //limit&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
$l = mysql_fetch_array($res);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Zum Debuggen kann man so den Query testen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
t3lib_div::debug($GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;SELECTquery(&lt;br /&gt;
  &amp;#039;COUNT(ap-status)&amp;#039;,     //felder&lt;br /&gt;
  &amp;#039;aa_tagungen&amp;#039;,              //from&lt;br /&gt;
  &amp;#039;id= &amp;#039;.$_GET[tid].&amp;#039;&amp;#039;,         //where&lt;br /&gt;
  &amp;#039;ap-status&amp;#039;,    //group&lt;br /&gt;
  &amp;#039;&amp;#039;,         //order&lt;br /&gt;
  &amp;#039;&amp;#039;          //limit&lt;br /&gt;
));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.47.51.180</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=TYPO3_-_Datenbankabfragen_in_Extensions&amp;diff=1702</id>
		<title>TYPO3 - Datenbankabfragen in Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=TYPO3_-_Datenbankabfragen_in_Extensions&amp;diff=1702"/>
		<updated>2009-05-28T11:18:27Z</updated>

		<summary type="html">&lt;p&gt;91.47.51.180: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über piBase ==&lt;br /&gt;
Viel Arbeit nimmt einem der Zugriff über das piBase Objekt ab. Im Endeffekt greift es auf das Globale Datenbankobjekt zu (siehe unten) stellt aber schon einige Vordefinierte Funktjionien zur Verfügung. Beispielsweise muß man sich dann nicht mehr um Versteckte Datensätze, Start, Stop Zeiten etc. kümmern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
plugin.tx_gbcamps_pi1 {&lt;br /&gt;
    #CMD =&lt;br /&gt;
    pidList = 36&lt;br /&gt;
    #pidSingle =&lt;br /&gt;
    recursive = 1&lt;br /&gt;
    #templateFile = EXT:gbcamps/res/template.html&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Auskommentierten Werte sind ebenfalls sinnvolle Werte für den Start.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzung ===&lt;br /&gt;
In der TypoScript Konfiguration sollten die Werte:&lt;br /&gt;
== Über das Globale Datenbankobjekt ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 t3lib/class.t3lib_db.php&lt;br /&gt;
Die Instanz der Klasse steht im Front und Backend unter $GLOBALS[&amp;#039;TYPO3_DB&amp;#039;] zur Verfügung. Der Aufruf erfolgt z.B. so:&lt;br /&gt;
 $GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;sql_query(meineParameter);&lt;br /&gt;
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:&lt;br /&gt;
 $GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;exec_SELECT_mm_query($select,$local_table,$mm_table,$foreign_table,$whereClause=&amp;#039;&amp;#039;,$groupBy=&amp;#039;&amp;#039;,$orderBy=&amp;#039;&amp;#039;,$limit=&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
exec_SELECTquery(&lt;br /&gt;
&amp;#039;...&amp;#039;, # hier alle Felder&lt;br /&gt;
&amp;#039;tabelle1 a,tabelle2 b,tabelle3 c&amp;#039;, #hier die Tabellen&lt;br /&gt;
&amp;#039;a.feld=b.uid and b.feld=c.uid ...&amp;#039;, #die Zuordnung und sonstige wheres&lt;br /&gt;
&amp;#039;&amp;#039;,&amp;#039;&amp;#039;,&amp;#039;&amp;#039;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SELECT:&lt;br /&gt;
$res = $GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;exec_SELECTquery(&lt;br /&gt;
                &amp;#039;*&amp;#039;,         // SELECT ...&lt;br /&gt;
                &amp;#039;mytable&amp;#039;,     // FROM ...&lt;br /&gt;
                &amp;#039;uid=123 AND title LIKE &amp;quot;%blabla%&amp;quot;&amp;#039;,    // WHERE...&lt;br /&gt;
                &amp;#039;&amp;#039;,            // GROUP BY...&lt;br /&gt;
                &amp;#039;title&amp;#039;,    // ORDER BY...&lt;br /&gt;
                &amp;#039;5,10&amp;#039;            // LIMIT to 10 rows, starting with number 5 (MySQL compat.)&lt;br /&gt;
            );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// INSERT:&lt;br /&gt;
$insertArray = array(&lt;br /&gt;
    &amp;#039;pid&amp;#039; =&amp;gt; 123,&lt;br /&gt;
    &amp;#039;title&amp;#039; =&amp;gt; &amp;quot;My Title&amp;quot;&lt;br /&gt;
);&lt;br /&gt;
$res = $GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;exec_INSERTquery(&amp;#039;mytable&amp;#039;, $insertArray);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// UPDATE:&lt;br /&gt;
$updateArray = array(&lt;br /&gt;
    &amp;#039;title&amp;#039; =&amp;gt; &amp;quot;My Title&amp;quot;&lt;br /&gt;
);&lt;br /&gt;
$res = $GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;exec_UPDATEquery(&amp;#039;mytable&amp;#039;, &amp;#039;uid=123&amp;#039;, $updateArray);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// DELETE&lt;br /&gt;
$res = $GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;exec_DELETEquery(&amp;#039;mytable&amp;#039;, &amp;#039;uid=123&amp;#039;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$res=$GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;exec_SELECTquery(&lt;br /&gt;
  &amp;#039;COUNT(ap-status)&amp;#039;,     //felder&lt;br /&gt;
  &amp;#039;aa_tagungen&amp;#039;,              //from&lt;br /&gt;
  &amp;#039;id= &amp;#039;.$_GET[tid].&amp;#039;&amp;#039;,         //where&lt;br /&gt;
  &amp;#039;ap-status&amp;#039;,    //group&lt;br /&gt;
  &amp;#039;&amp;#039;,         //order&lt;br /&gt;
  &amp;#039;&amp;#039;          //limit&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
$l = mysql_fetch_array($res);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Zum Debuggen kann man so den Query testen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
t3lib_div::debug($GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;SELECTquery(&lt;br /&gt;
  &amp;#039;COUNT(ap-status)&amp;#039;,     //felder&lt;br /&gt;
  &amp;#039;aa_tagungen&amp;#039;,              //from&lt;br /&gt;
  &amp;#039;id= &amp;#039;.$_GET[tid].&amp;#039;&amp;#039;,         //where&lt;br /&gt;
  &amp;#039;ap-status&amp;#039;,    //group&lt;br /&gt;
  &amp;#039;&amp;#039;,         //order&lt;br /&gt;
  &amp;#039;&amp;#039;          //limit&lt;br /&gt;
));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.47.51.180</name></author>
	</entry>
</feed>