Vorteile der Verwendung von MySQLi
Prepared Statements oder Prepared Statements: Es ist einfacher, Abfragen zu erstellen, bietet viel Sicherheit gegen SQL-Injection mit der Funktion:
$ mysqli-> prepare ();
Mehrere Abfragen oder Abfragen
Möglichkeit, mehrere Abfragen oder Abfragen in einer Verbindung auszuführen.
Beispiel
$ sqla = "SELECT * von Clients;" $ sqlb. = "SELECT * FROM Rechnungen ***** BY idcliente" $ mysqli-> multi_query ($ sqla; sqlb)
An Objekten orientiert
Mit dieser MySQLi-Funktion kann der Entwickler Objekte verwenden, um die Verwendung, Leistung und Sichtbarkeit des Quellcodes zu verbessern.
Der MySQLi Extension-Treiber wird in der PHP-Programmiersprache verwendet, um eine Schnittstelle mit MySQL-Datenbanken bereitzustellen. Die Entwickler der PHP-Programmiersprache empfehlen, MySQLi für MySQL-Server-Versionen 4.1.3 und höher zu verwenden.
Wir werden eine Klasse aus pHp mit Methoden und Eigenschaften erstellen, um Datenbanken zu manipulieren oder zu verwalten.
Die Klasse wird die folgende sein:
Klasse dbmysqli { // deklariere eine Variable für die Verbindung öffentliche $ Verbindung; // Wir deklarieren den Konstruktor der Klasse public function __construct ($ host, $ user, $ password, $ db) { } // Funktion zum Erstellen von Tabellen öffentliche Funktion creartabla ($ sql) { } // Neue Daten in der Datenbank speichern public function insert ($ table, $ datadata) { } // Daten aus der Datenbank löschen public function delete ($ table, $ datadata) { } public function Update ($ table, $ fieldsset, $ fieldscondition) { } // Funktion In einer Tabelle suchen Suche nach öffentlichen Funktionen ($ table, $ fields) { } }
MySQLi Connection und Klasse
Um eine Verbindung zum MySQLi-Server herzustellen, müssen wir die Konstruktormethode aufrufen und vier Argumente senden, nämlich den Hostnamen als localhost, den Benutzernamen, das Datenbankkennwort und den Datenbanknamen.
Im Konstruktor fügen wir die Verbindung zum Server hinzu:
public function __construct ($ host, $ user, $ key, $ db) { $ this-> connection = new mysqli ($ host, $ user, $ clav); }
Dann rufen wir es so auf:
// Verbindung zum Server und zur Datenbank herstellen $ conectadb = new dbmysqli ("localhost", "root", "abc123" c, "Vehiclesdb");
: Wir definieren die Methode zur dynamischen Erstellung von Tabellen :
// Funktion, die Tabellen erstellt öffentliche Funktion creartabla ($ sql) { if ($ this-> connection-> query ($ sql) === TRUE) { echo "Eine Tabelle wurde erstellt"; } else { echo "Fail: Die Tabelle wurde nicht erstellt". $ this-> connection-> error; } }
Dann rufen wir es so auf, erstellen die SQL-Abfrage und rufen die Funktion creartabla () auf :
$ sql = "TABELLE TROPFEN, WENN` clients` EXISTIERT; TABELLE ERSTELLEN, WENN KEINE `clients` existieren ( `idcustom` int (11) NICHT NULL AUTO_INCREMENT,` name` varchar (255) NICHT NULL, PRIMARY KEY ("idcliente") " $ conectadb -> creartabla ($ sql);
Wir sehen aus pHpMyAdmin, wie die Tabelle beim Ausführen des PHP-Skripts erstellt wurde .
Wir definieren die Methode zum Einfügen / Aufzeichnen von Daten
Anschließend erstellen wir die Methoden ABM oder CRUD, die für die Verwaltung der Daten der Tabellen verantwortlich sind. Um Parameter an jede Methode zu senden, verwenden wir eine Matrix, wobei der Index der Matrix das Feld der Tabelle ist und der Wert dieses Index die Daten für das Feld der Tabelle sind. Jeder Indexname muss in doppelten Anführungszeichen angegeben werden und der Wert muss den folgenden Regeln entsprechen:
- Die Zeichenfolgenwerte müssen einfache Anführungszeichen sein. Beispiel “name” => ‘Maria’
- Numerische Werte sollten keine Anführungszeichen enthalten. Beispiel “Preis” => 10,50
- Das Wort NULL ODER leer sollte keine Anführungszeichen enthalten. Beispiel “Preis” => NULL
// Wir erstellen die Funktion, die das Matrixfeld => Daten als Parameter übernimmt public function insert ($ table, $ datadata) { // Wir trennen die Daten, falls es mehrere gibt $ field = implode (",", array_keys ($ datafields)); $ i = 0; foreach ($ datadata als $ index => $ value) { $ data [$ i] = "'". $ value. "'"; $ i ++; } $ data = implode (",", $ data); // Füge die Werte in jedes Feld ein if ($ this-> connection-> query ("INSERT INTO $ table ($ index) VALUES ($ data)") === TRUE) { Echo "Neuer Client eingefügt"; } else { echo "Fehler hat den Client nicht eingefügt". $ this-> connection-> error; } }
Wir erstellen unsere Matrix mit den Daten, die aus einem Formular stammen können:
// Datenmatrix, die eingefügt werden soll $ clients = array ("name" => "Carlos Moira", "name" => "Jose Triana", "name" => "Julia Ordoñez", "name" => "Carla Angelez");
Dann rufen wir es so auf, rufen die Einfügefunktion (“clients”, $ clients) auf und fügen die Parameter hinzu:
$ conectadb -> insert ("clients", $ clients);
Wir definieren die Methode zum Löschen von Daten
Um die Löschoperation auszuführen, deklarieren wir eine Matrix, in der wir angeben, welche Zeile oder ID wir entfernen möchten.
// Funktion zum Löschen von Daten aus einer Tabelle public function delete ($ table, $ datadata) { $ i = 0; foreach ($ datadata als $ index => $ value) { $ data [$ i] = "'". $ value. "'"; $ i ++; } $ campoydato = implode ("AND", $ data); if ($ this-> connection-> query ("DELETE FROM $ table WHERE $ fieldanddate") === TRUE) { if (mysqli_affected_rows ($ this-> connection)) { echo "Aufnahme entfernt"; } else { echo "Datensatz konnte nicht gelöscht werden." $ this-> connection-> error; } }
Wir erstellen eine Matrix mit den zu löschenden Daten, die aus einem Formular stammen können
// Zu löschende Datenmatrix $ clientsclose = array ("clientclient" => 1, "clientclient" => 50, "clientclient" => 8, "clientclient" => 104);
Dann rufen wir es so auf, rufen die Löschfunktion (“clients”, $ clientsbring) auf und fügen die Parameter hinzu
$ conectadb -> delete ("clientes", $ clientesborrar);
Wir definieren die Methode zum Aktualisieren von Daten
Um die Daten der zu ändernden Zeile zu aktualisieren, deklarieren wir zwei assoziative Matrizen, eine für die zu ändernden Felder und eine für die where- Bedingung in der SQL-Abfrage. Die Matrixregeln müssen der gleichen Syntax entsprechen, die wir von Anfang an für die Matrix definiert haben.
Berücksichtigung der MySQL-Update-Syntax:
UPDATE Clients SET name = 'nuevonombre' WHERE clientid.id = valueid; // Wir erstellen die Funktion, die das Matrixfeld => Daten als Parameter übernimmt public function Update ($ table, $ fieldsset, $ fieldscondition) { // trennen Sie die zu ändernden SET-Werte $ i = 0; foreach ($ fieldsset als $ index => $ data) { $ datoset [$ i] = $ index. "= '". $ data. "'"; $ i ++; } $ consultaset = implode (",", $ datoset); $ i = 0; foreach ($ fieldscondition als $ index => $ datacondition) { $ condition [$ i] = $ index. "= '". $ datacondition. "'"; $ i ++; } $ querycondition = implode ("AND", $ condition); // Datensätze aktualisieren if ($ this-> connection-> query ("UPDATE $ table SET $ querieset WHERE $ querycondition") === TRUE) { if (mysqli_affected_rows ($ this-> connection)) { Echo "Datensatz aktualisiert"; } else { echo "Datensatz konnte nicht gelöscht werden." $ this-> connection-> error; } }
Wir erstellen unsere Matrix mit den SET-Daten, die die zu aktualisierenden Felder sind, und neuen Werten. Außerdem erstellen wir ein Array für die WHERE-Bedingung mit den IDs der zu aktualisierenden Datensätze, die aus einem Formular stammen können:
// Datenmatrix SET $ clientsset = array ("name" => "Carlos Juan Dolfo", "name" => "Pedro Dorien Triana", "name" => "Enrique Ordoñez", "nombre" => "Carla Dolores Angeles"); $ clientswhere = array ("clientclient" => 1, "clientclient" => 2, "clientclient" => 5, "clientclient" => 10);
Dann rufen wir es so auf, rufen die Update-Funktion auf (“clients”, $ clientsset, $ clientswhere) und fügen die Parameter hinzu.
$ conectadb-> Update ("clientes", $ clientesset, $ clienteswhere);
In allen Abfragen verwenden wir die native MySQLi-Funktion, um Fehler zu erkennen. $ Mysqli-> error zeigt eine Fehlermeldung für jede SQL-Abfrage oder MySQLi-Funktion an, die möglicherweise ausgeführt wurde und fehlgeschlagen ist, sodass wir wissen, warum der Fehler aufgetreten ist.
Wir definieren die Methode zum Suchen von Daten
Um die Daten aus der Tabelle zu erhalten, erstellen wir eine Abfragemethode mit zwei Parametern, wobei einer der Name der Tabelle und der andere ein Array ist, das den Namen der Spalten und den Wert enthält, den Sie durchsuchen möchten.
Wir können die Art der zu erhaltenden Ergebnismatrix angeben. Die möglichen Werte für diesen Parameter sind die Konstanten MYSQLI_ASSOC, MYSQLI_NUM .
Matrixtyp MYSQLI_ASSOC
Array { name => 'Carlos Juan Dolfo', name "=> 'Enrique Ordoñez' }
Matrixtyp MYSQLI_NUM
Array { 0 => 'Carlos Juan Dolfo', 1 => 'Enrique Ordoñez' } Suche nach öffentlichen Funktionen ($ table, $ fields) { $ fields = implode (",", $ fields); $ result = $ this-> connection-> query ("SELECT $ fields FROM $ table"); return $ result-> fetch_all (MYSQLI_ASSOC); }
Wir erstellen unsere Matrix mit den zu suchenden Daten, die aus einem Formular stammen können:
// Zu durchsuchendes Datenarray $ clientssearch = array ("benutzername", "name");
Dann rufen wir es so auf, rufen die Suchfunktion (“clients”, $ clientssearch) auf und fügen die Parameter hinzu:
$ conectadb -> search ($ tabla, $ clientesbuscar);
Diese Funktion gibt ein Recorset zurück , das wir als Array durchlaufen müssen, um die Daten der einzelnen Felder anzuzeigen :