Hallo allerseits! Sicherlich stieß jeder, der viel und ständig in
PHP schreibt, auf das Problem, Abfragen an
MySQL-Datenbanken zu optimieren und zu vereinfachen. Jemand hat bereits bequeme Klassen / Prozeduren für sich selbst geschrieben, jemand hat etwas auf den offenen Flächen des Netzwerks gefunden.
Da meine Skripte in
PHP immer mehr auf eine Aufgabe reduziert werden - das Abrufen aus einer Datenbank und das Übergeben dieser Daten an clientseitige Java-Skripte - habe ich es mir einfacher gemacht, indem ich eine bequeme (für mich natürlich) Datenbankklasse erstellt habe
MySQLIch werde
sofort eine Reservierung vornehmen - die eingebaute
mqsli- Klasse
ist recht praktisch und funktional, aber angesichts der gleichen Fragen
jeden Tag wäre es seltsam, Ihr Schicksal nicht ein bisschen zu erleichtern.
Die
exDBase- Klasse wird Ihrer Aufmerksamkeit angeboten, sie ist im Wesentlichen ein Wrapper für die
mysqli- Klasse. Reservieren Sie sofort - ich bin ein Programmierer für Anfänger und bin bereit, viel Kritik für den geschriebenen Code in Kommentaren oder persönlichen Nachrichten zu erhalten. Ich besitze RegExp zum Beispiel nicht wirklich, was den Code stark vereinfachen würde, vielleicht gibt es andere Beschwerden. Aber trotzdem ...
Die gesamte Bibliothek ist in einer Datei enthalten -
exdbase.php . Diese Datei enthält die
Beschreibung der
exDBase- Klasse. Um zu arbeiten, müssen Sie nur die Datei herunterladen und die folgende Zeile registrieren:
require_once ('exdbase.php')
Erstellen Sie zunächst eine Instanz der Klasse. Dies ist sehr einfach:
$DB = new exDBase (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); if ($DB->error) echo " : $DB->error";
Die Eigenschaft
$ DB-> error enthält immer den Fehler der letzten Operation (falls ein Fehler aufgetreten ist), oder sie ist leer.
Das Format ist fast identisch mit der Instanziierung der
mysqli- Klasse. Anstelle der im Beispiel angegebenen Konstanten müssen Sie natürlich die tatsächlichen Werte für Host, Benutzername, Kennwort und Datenbanknamen ersetzen.
Jetzt kannst du üben. Angenommen, wir haben eine vorgefertigte Datenbank und eine
Client- Tabelle mit Feldern:
ID - eindeutige Nummer, automatische Inkrementierung
NAME - Kundenname
ALTER - Kundenalter
BETRAG - Anzahl der Einkäufe
BLOCKED - Boolescher
Wert , Client gesperrt oder aktiv
EINSTELLUNGEN - persönliche Parameter, die wir im JSON-Format speichern
Datenbank abfragen
Lassen Sie uns alle Einträge aus der Tabelle '
clients ' abrufen.
Hierfür gibt es eine
fetchArray- Methode.
$res = $DB->fetchArray ('clients'); // if ($res) foreach ($res as $client) echo print_r ($client, true); //
Und wenn wir nur die erste Aufzeichnung der Anfrage erhalten wollen?
Hierfür gibt es eine
fetchFirst- Methode.
$res = $DB->fetchFirst ('clients'); // if ($res) echo print_r ($client, true); //
Wir müssen jedoch kaum alle Datensätze aus der Tabelle abrufen, es gibt immer Auswahlbedingungen (das WHERE-Feld im SELECT-Befehl). Was machen wir Ja, sehr einfach. Dies ist das zweite Argument für die Methoden fetchArray oder fetchFirst.
Angenommen, wir möchten alle Kunden mit dem Namen John auswählen. In unserer Klasse kann dies auf zwei Arten geschehen.
Die erste besteht darin, die Bedingung einfach mit einer Zeichenfolge der Form "NAME = 'John'" festzulegen.
$res = $DB->fetchArray ('clients', "NAME = 'John'");
Die zweite besteht darin, die Bedingung in einem Array festzulegen:
$res = $DB->fetchArray ('clients', array ("NAME" => "John"));
Und wenn es mehr Bedingungen gibt? Sollte zum Beispiel das Alter 30 sein? Einfach:
$res = $DB->fetchArray ('clients', array ("NAME" = "John", "AGE" => 30));
Auf diese Weise können Sie mehrere Suchbegriffe kombinieren. Aber Gleichheit ... Und wenn wir alle Kunden mit dem Namen John finden wollen, die über 25 Jahre alt sind? Hier kommen spezielle Präfixe zur Rettung:
$res = $DB->fetchArray ('clients', array ("NAME" = "John", ">=AGE" => 25));
Zusätzlich zu "> =" können Sie Folgendes verwenden: ">", "<", "<=", "! =", "<>", "! =". So können Sie Abfragen unterschiedlicher Komplexität erstellen und immer die richtigen Antworten erhalten.
Der dritte Parameter der Datenbankabrufmethoden sind die Tabellenfelder. Sie können entweder als Zeichenfolge (zum Beispiel: "NAME, AGE") oder als Array: Array ("NAME", "AGE") angegeben werden.
$res = $DB->fetchArray ('clients', array ("NAME" = "John", ">=AGE" => 25), array ("NAME", "AGE"));
Der vierte und letzte Parameter der Abrufmethoden fetchArray und fetchFirst ist die Sortierreihenfolge. Es wird auch entweder durch eine Zeichenfolge (Typ: "ID ASC, NAME DESC") oder ein Array-Array ("ID" => "ASC", "NAME" => "DESC") angegeben.
$res = $DB->fetchArray ('clients', array ("NAME" = "John", ">=AGE" => 25), array ("NAME", "AGE"), array ("ID" => "ASC", "NAME" => "DESC"));
Nun, mit den Daten enden, die Sie fragen - und wie Sie die Auswahl einschränken können? Zum Beispiel werden nur die ersten 10 Einträge benötigt?
Dies geschieht mit der setLimit () -Methode wie folgt:
$DB->setLimit (10); $res = $DB->fetchArray ('clients', "NAME = 'John'");
Die setLimit () -Methode arbeitet nur mit einer Anforderung, wonach die Grenzwerte zurückgesetzt werden.
Neue Daten einfügen
Es gibt eine
insert () -Methode zum Schreiben neuer Daten.
$id = $DB->insert ('clients', array ("NAME" => 'Peter', "AGE" => 27, "AMOUNT" => 1000.25));
Es gibt den Wert des primären Auto-Inkrement-Schlüssels zurück (falls einer in der Tabelle angegeben ist). In unserem Fall wird die ID des eingefügten Datensatzes zurückgegeben.
Datenaktualisierung
Die Daten werden mit der
update () -Methode aktualisiert.
$DB->update ('clients', array ("NAME" => 'Peter'), array ("AGE" => 30, "AMOUNT" => 2000.25));
Wir haben alle Datensätze aktualisiert, bei denen der Name (Feld NAME) "Peter" lautet. Das zweite Argument für die Methode ist die Auswahlbedingung im exakt gleichen Format wie WHERE for SELECT. Nun, das dritte Argument für die Methode sind die Daten selbst. Jetzt werden alle derartigen Aufzeichnungen mit dem Namen "Peter" 30 Jahre alt und die Summe wird 2000,25 sein.
Daten löschen
Wenn Sie die Logik der Bibliothek bereits verstanden haben, ist das Entfernen sehr einfach. Die Methode heißt
delete () .
$DB->delete ('clients', array ("NAME" => 'Peter'); // 'Peter' $DB->delete ('clients', array (">AGE" => '20'); // 20.
Hier ist so ein erster kurzer Ausflug in die exDBase-Bibliothek. Es gibt eine Reihe anderer, erweiterter Funktionen, aber ein anderes Mal mehr dazu.
UPD:
Sie können die Datei auf GitHub herunterladenGuter Code an alle!