Benutzer-Werkzeuge

Webseiten-Werkzeuge


dev:all:examples:sql-1

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
dev:all:examples:sql-1 [15.05.2015 11:08] – [Der richtige Einsatz von SQL-Abfragen] Manuela v.d.Deckendev:all:examples:sql-1 [25.10.2017 12:02] (aktuell) – [Eine Seite abrufen und dazu den Namen des zugehörenden Users] Manuela v.d.Decken
Zeile 2: Zeile 2:
 Dieses Kapitel soll häufige Fehler/Unsauberkeiten im Umgang mit Datenbanken in früheren Versionen von WB aufzeigen und auch gleich entsprechende Lösungen anbieten. Die beanstandeten Codefragmente sind **nicht** erfunden, sondern original aus WB und Modulen entnommen!  Dieses Kapitel soll häufige Fehler/Unsauberkeiten im Umgang mit Datenbanken in früheren Versionen von WB aufzeigen und auch gleich entsprechende Lösungen anbieten. Die beanstandeten Codefragmente sind **nicht** erfunden, sondern original aus WB und Modulen entnommen! 
 ===== Verschiedene Beispiele für mehr oder weniger komplexe SQL-Abfragen ===== ===== Verschiedene Beispiele für mehr oder weniger komplexe SQL-Abfragen =====
-**Achtung:** Die folgenden Beispiele sind nicht zur //**copy&paste**// Programmierung gedacht, sondern nur beispielhafte Denkanregungen, die aufzeigenwie ein Problem gelöst werden kann! +**Achtung:** Die folgenden Beispiele sind __**nicht**__ zur //**copy&paste**// Programmierung gedacht, sondern nur beispielhafte Denkanregungen, die aufzeigen sollen wie ein Problem gelöst werden kann! 
-===== Abruf eines einzelnen Users =====+==== Abruf eines einzelnen Users ====
 Es wird einfach anhand der `user_id` ein einzelner Datensatz in der Tabelle `users` gesucht Es wird einfach anhand der `user_id` ein einzelner Datensatz in der Tabelle `users` gesucht
  
Zeile 10: Zeile 10:
 $query = $database->query("SELECT * FROM '.TABLE_PREFIX.'users WHERE user_id = $user_id LIMIT 1"); $query = $database->query("SELECT * FROM '.TABLE_PREFIX.'users WHERE user_id = $user_id LIMIT 1");
 if ($query->numRows() > 0) { if ($query->numRows() > 0) {
-    while ($user = $query->fetchRow()) {+    while ($user = $query->fetchArray(MYSQLI_ASSOC)) {
          
         // all ok, do something with the data         // all ok, do something with the data
Zeile 22: Zeile 22:
   * Das SQL-Statement entspricht nicht den SQL-Strikt Regeln und ist zusätzlich noch innerhalb der Argumentenklammer von ->query() definiert.   * Das SQL-Statement entspricht nicht den SQL-Strikt Regeln und ist zusätzlich noch innerhalb der Argumentenklammer von ->query() definiert.
   * WHILE - diese Schleife ist überflüssig, da ja maximal nur ein Datensatz geliefert wird.   * WHILE - diese Schleife ist überflüssig, da ja maximal nur ein Datensatz geliefert wird.
-  * Die Abfrage auf numRows() ist überflüssig, weil das nachfolgende fetchRow() den ersten Datensatz des Result-Objektes oder **null**, falls kein Datensatz gefunden wurde, zurückgibt.+  * Die Abfrage auf numRows() ist überflüssig, weil das nachfolgende fetchArray() den ersten Datensatz des Result-Objektes oder **null**, falls kein Datensatz gefunden wurde, zurückgibt.
  
 Nach den neuen Standards von WB korrigiert, ergibt sich dadurch folgendes [color=green]richtige[/color] Codefragment: Nach den neuen Standards von WB korrigiert, ergibt sich dadurch folgendes [color=green]richtige[/color] Codefragment:
Zeile 45: Zeile 45:
 Diese Aufgabe ist ohne jeden zusätzlichen PHP-Code rein mit **SQL** elegant lösbar. Dazu müssen nur die beiden Tabellen über die Felder 'modified_by' und 'user_id' durch einen //JOIN// miteinander verknüpft werden.\\ Diese Aufgabe ist ohne jeden zusätzlichen PHP-Code rein mit **SQL** elegant lösbar. Dazu müssen nur die beiden Tabellen über die Felder 'modified_by' und 'user_id' durch einen //JOIN// miteinander verknüpft werden.\\
 Es lohnt sich auf jeden Fall, sich in SQL einzulesen um die Grundlagen zu begreifen. Es lohnt sich auf jeden Fall, sich in SQL einzulesen um die Grundlagen zu begreifen.
-<code=SQL Snippet.php>+<file sql Snippet.sql>
 SELECT `wb_users`.`display_name`, `wb_pages`.*  SELECT `wb_users`.`display_name`, `wb_pages`.* 
 FROM `wb_pages` LEFT JOIN `wb_users` FROM `wb_pages` LEFT JOIN `wb_users`
     ON `wb_pages`.`modified_by`=`wb_users`.`user_id`     ON `wb_pages`.`modified_by`=`wb_users`.`user_id`
 WHERE `wb_pages`.`page_id`=1 WHERE `wb_pages`.`page_id`=1
-</code>+</file>
  
 FIXME //... wird mit Auftauchen weiterer Beispiele kontinuierlich fortgesetzt!// FIXME //... wird mit Auftauchen weiterer Beispiele kontinuierlich fortgesetzt!//
  
dev/all/examples/sql-1.1431688133.txt.gz · Zuletzt geändert: 03.06.2015 15:54 (Externe Bearbeitung)