Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
dev:all:examples:sql-1 [15.05.2015 11:08] – [Der richtige Einsatz von SQL-Abfragen] Manuela v.d.Decken | dev: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/ | Dieses Kapitel soll häufige Fehler/ | ||
===== Verschiedene Beispiele für mehr oder weniger komplexe SQL-Abfragen ===== | ===== Verschiedene Beispiele für mehr oder weniger komplexe SQL-Abfragen ===== | ||
- | **Achtung: | + | **Achtung: |
- | ===== 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 = $database-> | ||
if ($query-> | if ($query-> | ||
- | 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 -> | * Das SQL-Statement entspricht nicht den SQL-Strikt Regeln und ist zusätzlich noch innerhalb der Argumentenklammer von -> | ||
* WHILE - diese Schleife ist überflüssig, | * WHILE - diese Schleife ist überflüssig, | ||
- | * Die Abfrage auf numRows() ist überflüssig, | + | * Die Abfrage auf numRows() ist überflüssig, |
Nach den neuen Standards von WB korrigiert, ergibt sich dadurch folgendes [color=green]richtige[/ | Nach den neuen Standards von WB korrigiert, ergibt sich dadurch folgendes [color=green]richtige[/ | ||
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 ' | 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 ' | ||
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 | + | <file sql Snippet.sql> |
SELECT `wb_users`.`display_name`, | SELECT `wb_users`.`display_name`, | ||
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!// | ||