Joomla! Programmierung/Framework/JFactory/getDBO
JFactory/getDBO Liefert eine Referenz zu dem globalen JDatabase Objekt. Wird nur neu erstellt, wenn es noch nicht existiert.
Inhaltsverzeichnis |
[Bearbeiten] Syntax
- @return object JDatabase
- @since
[Bearbeiten] Beispiele
[Bearbeiten] Datenbankpräfix auslesen
Um alle Beispiele nachvollziehen zu können, benötigen Sie ggf. Kenntnisse aus der Klasse JDatabase, JDatabaseMySQL oder JDatabaseMySQLi
Auslesen des Datenbank Präfixes.
$db =& JFactory::getDBO(); echo "Das Datenbankpräfix lautet : " . $db->getPrefix();
Dies sollte in etwa folgendes ausgeben:
Das Datenbankpräfix lautet : jos_
[Bearbeiten] SELECT Statement ausführen
Im folgenden Beispiel wird eine Usereingabe (die Sie ggf. vorher mittels JRequest filtern sollten) in ein SELECT Statement eingebaut und danach ausgeführt.
// Datenbankobjekt laden $db =& JFactory::getDBO(); // $string simuliert die Eingabe $string = 'Foo'; // Das SELECT Statement zusammenbauen $query = ' SELECT * FROM '.$db->nameQuote('#__beispieltabelle').' WHERE '.$db->nameQuote('beispielfeld').' = '.$db->Quote($string) ; // Das Query speichern um es später ausführen zu können, LIMIT auf 0,10 setzen $db->setQuery($query, 0, 10); // Query ausgeben (es wird dabei NICHT ausgeführt), nützlich für Debugging Zwecke echo $db->getQuery(); // Anzahl der betroffenen Zeilen ausgeben echo $db->getAffectedRows(); // Das erste Feld der ersten Zeile laden, nützlich, wenn man genau ein Feld auslesen will $result1 = $db->loadResult(); // Jeweils das Xte Feld aller Zeilen ausgeben // in diesem Fall wird jeweils das 6te Feld ausgeben // Der Wert ist optional, wenn nicht gesetzt, wird jeweils das erste Feld ausgegeben $numinarray = 5; $result2 = $db->loadResultArray($numinarray); // Lädt die erste Zeile des Ergebnisses als assoziatives Array $result3 = $db->loadAssoc(); // Lädt alle Zeilen als Assoziatives Array $result4 = $db->loadAssocList(); // Lädt die erste Zeile des Ergebnisses als Objekt $result5 = $db->loadObject(); // Lädt alle Zeilen als Objekt, diese Zeilen werden dann zusammen als Array gespeichert $result6 = $db->loadObjectList(); // Lädt die erste Zeile des Ergebnisses als numerisches Objekt $result7 = $db->loadRow(); // Lädt alle Zeilen als numerisches Objekt, diese Zeilen werden dann zusammen als Array gespeichert $result8 = $db->loadRowList();
[Bearbeiten] Werte in die Datenbank schreiben und aktualisieren
In folgenden Beispiel wird etwas in die Datenbank geschrieben, die zuletzt Eingetragene ID ausgelesen und danach ein Feld aktualisiert. Dieser Vorgang sollte im Idealfall mit der Klasse JTable geschehen, ist hier aber aus Demonstrationszwecken trotzdem aufgeführt.
// Datenbankobjekt laden $db =& JFactory::getDBO(); // Objekt erstellen $wert = new StdClass(); // Werte zuweisen $wert->id= null; $wert->feld1 = 'wert1'; $wert->feld2 = 'wert2'; $wert->feld3 = 'wert3'; $wert->feld4 = 'wert4'; $tabelle = '#__beispieltabelle'; // Werte Speichern/Query ausführen $db->insertObject($tabelle, $wert, 'id'); // Query ausgeben echo $db->getQuery(); /** * * INSERT INTO `jos_beispieltabelle` ( `feld1`, `feld2`, `feld3`, `feld4` ) VALUES ( 'wert1', 'wert2', 'wert3', 'wert4' ) * */ // ID des gerade eingefügten Beitrages holen (ist nun auch in $wert->id gesetzt), wir nehmen an, das ist in diesem Fall "1" $id = $db->insertid(); // Objekt erstellen $wert2 = new StdClass(); // Werte zuweisen $wert2->id = $id; $wert2->feld1 = 'test1'; $wert2->feld2 = 'test2'; $wert2->feld3 = 'test3'; $wert2->feld4 = 'test4'; // Neue Werte in den vorher erstellten Datenbankeintrag einfügen $db->updateObject($tabelle, $wert2, 'id'); // Query ausgeben echo $db->getQuery(); /** * * UPDATE `jos_beispieltabelle` SET `feld1`='test1',`feld2`='test2',`feld3`='test3',`feld4`='test4' WHERE id='1' * */
[Bearbeiten] Siehe auch
- JFactory->getDBO() auf api.joomla.org
- JDatabase
- JDatabaseMySQL
- JDatabaseMySQLi
[Bearbeiten] Quellcode
SOURCE CODE NOT FOUND :(