MySQLi Selectabfrage als Stringabfrage in PHP nutzen

Datenfelder auf Teile untersuchen

Mit der where-Abfrage kann man die select-Funktion durch Filter sehr einfach erweitern und Beispiele hierzu haben wir uns in den letzten Artikeln bereits angeschaut. Nun wird die Filterfunktion noch verfeinert, indem nicht präzise Informationen gesucht werden, sondern nur Teile davon. Dabei sind Platzhalter ein wesentliches Werkzeug.

Die Platzhalter kennt man auch von der Suche nach Dateien am Computer und in der SQL-Struktur spielen sie auch eine große Rolle. Daher kann man sie in der MySQLi-Datenbank nutzen und zwar durch den Zusatz von like und dem Einsatz des Prozentzeichens, das zum Platzhalter für weitere Infoteile wird.

PHP-Abfrage in MySQLi mit select und Platzhalter

$sql = "select * from adressen where nachname = 'Maier'";
    if($result = $mysqli->query($sql)) {
    while($obj = $result->fetch_object()) {
                     echo "

".$obj->vorname." ".$obj->nachname."

";
                    }
    } else { echo mysqli_error($mysqli);exit; }

Ausgangspunkt ist wieder diese einfache Abfrage, bei der als Filter das Kriterium Nachname = Maier genannt wird. Das =-Zeichen bekundet, dass der Nachname genau so lauten muss, andernfalls wird der Datensatz ignoriert. Jetzt ist das aber nicht wirklich praktisch, weil es kann jemand auch Maierhofer heißen und würde nicht aufscheinen.

Also braucht es eine andere Lösung und hier hilft der Zusatz like weiter.

$sql = "select * from adressen where nachname like 'Maier%'";
    if($result = $mysqli->query($sql)) {
    while($obj = $result->fetch_object()) {
                     echo "

".$obj->vorname." ".$obj->nachname."

";
                    }
    } else { echo mysqli_error($mysqli);exit; }

In diesem Fall wird scheinbar das gleiche abgefragt, aber das ist nur bedingt so. Denn die Abfrage like 'Maier%' bedeutet, dass alle Datensätze herausgefunden werden sollen, die mit Maier beginnen, aber danach kann alles stehen, was mit dem %-Zeichen dokumentiert wird. Also Maier, Maierle, Maierhofer - sie alle würden jetzt herausgefunden werden.

Weitere Möglichkeiten

$sql = "select * from adressen where nachname like '%aier%'";
    if($result = $mysqli->query($sql)) {
    while($obj = $result->fetch_object()) {
                     echo "

".$obj->vorname." ".$obj->nachname."

";
                    }
    } else { echo mysqli_error($mysqli);exit; }

Diese Abfrage geht noch einen Schritt weiter und nutzt zwei %-Zeichen. Voraussetzung ist, dass aier im Namen vorkommt, aber Baier wäre jetzt auch möglich, das wäre bei der zweiten Abfrage nicht akzeptabel gewesen. Das heißt, man könnte auch mit %e% eine Abfrage starten und jeder Eintrag mit einem e würde gefunden werden.

Denkbar wäre zum Beispiel eine Abfrage mit ort like '%dorf', wodurch jeder Ort gelistet wird, der mit dorf endet. Das heißt, dass abhängig von der Position des %-Zeichens verschiedenste Varianten eingesetzt werden können.

Lesen Sie auch

So richtig aus dem Vollen kann man dann schöpfen, wenn man die Programmiersprache PHP mit dem System der MySQLi-Datenbank verknüpft. Der SQL-Befehlssatz bleibt bestehen, wird aber durch die PHP-Umgebung ummantelt, damit beide kommunizieren können: die Datenbank weiß, was Sache ist und PHP versteht die Antwort. MySQL + PHP bedeutet, dass man direkt vom Skript aus auf die Daten zugreifen kann.

Die Grundvoraussetzung ist einmal das Anlegen einer Datenbank, was auch von PHP aus möglich ist und dann braucht es die Verbindung zur Datenbank.

Damit ist die Grundbasis gelegt und man kann Tabellen anlegen und die Daten speichern. Dabei kann mit mysqli_insert_id die aktuelle laufende Nummer für weitere Aktionen nützlich sein und wichtig ist das Verständnis mit mysqli_close, um nicht mehr gebrauchte Verbindungen zu beenden. Wichtig ist aber auch die richtige Schreibweise beim Arbeiten mit den Daten.

Das Herzstück ist aber die Abfrage. Zweifelsohne braucht man delete und andere Befehle auch, um zu manipulieren, aber mit select kann man verschiedenste Abfragen durchführen wie nach Kriterium, Menge oder auch als Stringabfrage samt Sortierungsangabe.

Diesen Artikel teilen

Kategorien

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

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