Sie sind hier: Startseite -> MySQLi-Grundlagen -> Select - Filter

Select-Abfrage in MySQLi mit Filter

Suchkriterium als Auswahlvoraussetzung auswählen

Der simple Einsatz von select wurde im letzten Artikel besprochen, nun geht es darum, mit Filtern zu arbeiten. Denn wenn man es mit einer großen Datentabelle zu tun hat, will man nicht alle 20.000 Adressen auf einmal haben - oft will man sogar nur einen Datensatz heraussuchen oder man möchte für statistische Zwecke wissen, wer unter bestimmten Kriterien gefunden werden kann und wie viele Kunden das sind.

Select-Abfragen mit MySQLi erweitern

Der Ausgangspunkt ist eine einfache Abfrage gewesen, um den select-Befehl überhaupt vorstellen zu können. Dabei wurden auch alle Datenfelder berücksichtigt.


Webhosting mit viel Software bei Alfahosting (Affiliate-Link)


Mit

select * from adressen

haben wir im letzten Artikel alle Datensätze und alle Datenfelder herausgesucht, die gefunden werden können. Nun wollen wir aber wissen, wer von diesen Leuten (wir spekulieren, dass es 20.000 sind) in Wien wohnt. Die anderen interessieren uns nicht. Hier bietet sich der Zusatz where an, der eine Kombination aus Datenfeld und Daten erfordert.

select * from adressen where ort = 'Wien'


Webhosting bei Alfahosting - jetzt gratis testen! (Affiliate-Link)


Mit "where ort = Wien fragt man die Datentabelle adressen nach all jenen Datensätzen ab, die im Feld ort den Text Wien haben. Alle anderen Datensätze sind egal und werden nicht berücksichtigt. Auf recht einfache Weise wurde somit ein Filter gesetzt. Nehmen wir weiters an, dass es sich um eine Kundentabelle handelt, bei der die Kunden ihre Anmeldung bestätigen müssen. Nur solche, die das Bestätigungsmail angeklickt haben, dürfen auch auf der Webseite einkaufen können. Wir unterstellen jetzt, dass es ein aktiv-Feld in der Datentabelle gibt und wer bestätigt hat, hat den Wert 1, andernfalls ist der Wert 0 gespeichert.

select * from adressen where ort = 'Wien' and aktiv = '1'

Wieder kommt where zum Einsatz, aber durch "and" kann eine zweite Abfrage ergo ein zweiter Filter gesetzt werden. Nun werden nur noch jene Kunden herausgesucht, die als Ort Wien angegeben haben und die auch ihre Mitgliedschaft bestätigt haben.

Was ist eigentlich, wenn man nicht genau den Text weiß oder unterstellt, dass er verschieden geschrieben sein könnte. Stellen wir uns eine Produktliste vor, bei der je nach Anbieter unterschiedliche Produktnamen eingetragen werden. Manche Produkte haben eine Produktnummer DE4496969 DE4596969 usw., andere FF49494 und FF5553059. Was ist zu tun, wenn man alle FF-Produkte haben möchte?

select * from produkte where produktnummer like 'FF%'

Während wir oben mit dem "=" den genauen Inhalt angefordert haben, wird nun mit like gearbeitet. Bei "=" muss genau "Wien" eingetragen sein, sonst ignoriert MySQLi den Datensatz. Like ist eine Stringabfrage, bei der in diesem Fall FF am Beginn stehen muss, was dahinter steht ist völlig egal. Like arbeitet mit dem Prozentzeichen, wobei dieses am Anfang, am Ende oder an beiden Seiten stehen kann und ein Platzhalter ist. In diesem Fall ist FF das Kriterium, der Rest der Informationen ist nicht relevant. Möglich wäre auch

select * from produkte where produktnummer like '%22%'

Jetzt gelten alle Produkte, bei denen 22 im Feld Produktnummer vorkommen, egal, ob am Beginn, am Ende oder mittendrin. Auf diese Weise kann man auch Namen, Textstellen oder ähnliches in eine select-Abfrage integrieren.

Lesen Sie auch

MySQLi basiert auf SQL und daher gibt es gar nicht so viele Befehle wie etwa in einer richtigen Programmiersprache, aber es gibt zu den Befehlen viele Zusätze, speziell bei der Abfrage mit select. Es gibt aber auch Befehle, die man kaum braucht und dazu gehört create zum Anlegen von Datenbanken und Datentabellen oder drop zum Löschen selbiger. Auch alter als Befehl zum Ändern wird selten benötigt.

Dann gibt es Anordnungen, die man sehr oft oder gelegentlich braucht, ganz nach Situation. Mit delete kann man Datensätze löschen und das ist in einem Skript immer wieder der Fall, etwa alte Statistikdaten. Und mit insert kann man neue Datensätze anlegen, zum Beispiel nach dem Eintragen im Geästebuch.

Der große Akteur auf Ebene der MySQLi-Datenbank auch von PHP aus ist der Befehl select. Er dient dazu, die vorhandenen Daten zu untersuchen und es gibt eine ganze Reihe an Möglichkeiten, wie dies erfolgen kann. Mit Filter, mit Begrenzungen oder auch mit verknüpften Kriterien, um die richtigen Datensätze zu finden. Selbst rechnen ist damit möglich.

Weitere Befehle gibt es mit Drop und Truncate, wobei Drop eine Tabelle komplett löschen kann oder auch Datenfelder aus einer Tabelle. Truncate leert die Tabelle, löscht also alle Datensätze. Diese Befehle nutzt man aber nicht in Skripte von außerhalb, sondern setzt sie direkt in phpMyAdmin bei der Verwaltung ein.

Themenseiten

Diesen Artikel teilen

Infos zum Artikel

select-Abfrage mit FilterArtikel-Thema: Select-Abfrage in MySQLi mit Filter
Beschreibung: Select-Abfrage in 📀 MySQLi mit einem Kriterium als ✅ Filter des Suchergebnisse und Beispielen bei der Umsetzung.

Kategorien

Grundlagen
HTML-Grundlagen
CSS-Grundlagen
Javascript-Grundlagen
PHP-Grundlagen
MySQL-Grundlagen
SEO-Grundlagen

Infos, Tipps, Vermarktung
Webdesign-Lexikon
Online-Werbung
PHP-Codeschnipsel
Praxisartikel