Grundlagen der Arbeit mit MySQL in PHP. SQL-Abfragen und deren Verarbeitung mit PHP Beispiele für MySQL-Abfragen in PHP

Der Text verwendet eine Übersetzung der offiziellen Dokumentation des Allrussischen Clubs der Webmaster.

Bei der Arbeit mit Datenbanken geht es darum, eine Verbindung zum Server herzustellen, eine Datenbank auszuwählen, eine Anfrage zu senden, die Anfrage zu verarbeiten und die Verbindung zu den Datenbanken zu trennen. Schauen wir uns das Ganze also Punkt für Punkt an. Zur Verdeutlichung des gesamten Textes stellen wir uns vor, dass auf dem lokalen Rechner ein MySQL-Server installiert ist. Der Port zum Arbeiten damit ist Standard. Um eine Verbindung herzustellen, verwenden wir den Benutzernamen „root“ und das Passwort „no_one“.

Verbindung

Die Verbindung zur Datenbank erfolgt über die Funktion „mysql_connect()“. Es werden drei Parameter übergeben: Servername (oder Servername:Verbindungsport), Benutzername und Passwort. Wenn ein zweiter Aufruf von „mysql_connect()“ mit denselben Argumenten erfolgt, nein neue Verbindung wird nicht aufgebaut, stattdessen wird die Verbindungskennung einer bereits geöffneten Verbindung zurückgegeben (d. h. die Arbeit wird mit derselben Datenbank fortgesetzt). Wenn Sie nur mit einer Datenbank arbeiten, müssen Sie keine Verbindungskennung erstellen. Sobald die Ausführung des Skripts abgeschlossen ist, wird die Verbindung zum Server geschlossen, es sei denn, sie wurde explizit durch einen früheren Aufruf von „mysql_close()“ geschlossen.

Beispiel: $connect = mysql_connect('localhost', 'root', 'no_one'); In diesem Fall ist die Variable $connect die Verbindungskennung. Wenn Sie nur mit einer Datenbank arbeiten, wird der Code ohne Bezeichner geschrieben: mysql_connect('localhost', 'root', 'no_one');

Auswählen einer Datenbank

„mysql_select_db“ – wählt eine MySQL-Datenbank aus. Das bedeutet, dass der Server möglicherweise nicht eine, sondern mehrere Datenbanken enthält. Mit diesem Befehl wählen wir das aus, das wir benötigen (für das wir die Rechte haben). Der Parameter dieser Funktion ist der Name der Datenbank. Die so ausgewählte Datenbank wird aktiv und mit einer bestimmten Kennung verknüpft. Wenn die Verbindungs-ID nicht definiert ist, wird die letzte Verbindung zur Datenbank verwendet.

Beispiel: mysql_select_bd('test', $connect); - wobei test der Datenbankname und $connect die Verbindungskennung ist. Wenn Sie nur mit einer Datenbank arbeiten, wird der Code ohne Bezeichner geschrieben: mysql_select_bd('test');

Senden einer Anfrage

mysql_query() sendet eine Abfrage an die aktuell auf dem Server aktive Datenbank, die einer bestimmten Link-ID zugeordnet ist. Wenn keine ID angegeben ist, wird die letzte offene Verbindung verwendet. Der Parameter dieser Funktion ist ein String mit einer SQL-Abfrage.

Beispiel: $tmp=mysql_query("slect * from table", $connect); – Dieser Befehl gibt den gesamten Inhalt der Tabelle Tabelle aus der aktiven Datenbank zurück, auf die durch den $connect-Bezeichner verwiesen wird. Wenn Sie nur mit einer Datenbank arbeiten, wird der Code ohne Bezeichner geschrieben: $tmp=mysql_query(“slect * from table“);

Bearbeitungsanfrage

Zur Bearbeitung von Anfragen stehen Ihnen mehrere Funktionen zur Verfügung. Die Wahl der einen oder anderen Methode zur Bearbeitung von Anfragen hängt vom Programmierstil und der jeweiligen Aufgabenstellung ab. Auch das sollte berücksichtigt werden verschiedene Varianten Der Server wird unterschiedlich „ausgelastet“ (manche stark, andere weniger). Schauen wir uns einige davon an.
mysql_fetch_object – gibt ein PHP-Objekt als Verarbeitungsergebnis zurück. Diese Methode eignet sich für diejenigen, die mit der Objektprogrammierung vertraut sind
Beispiel: while($result= mysql_fetch_object($tmp)) echo($result->name);

mysql_fetch_array – Das Ergebnis als assoziatives Array abrufen. Diese Methode eignet sich gut für Anfänger (obwohl es davon abhängt, wem sie mehr gefällt).

Schließen einer Verbindung

Die Verbindung wird mit der Funktion mysql_close() geschlossen. Sein Parameter ist die Datenbankverbindungskennung. Wird dieser Parameter nicht angegeben, wird die zuletzt aufgerufene Verbindung geschlossen.

Fehler sind der Fluch eines jeden Programms. Je größer das Projekt, desto schwieriger ist es, Fehler zu beheben und zu finden. Aber das Wichtigste bei der Arbeit mit einem Programm sind die Qualifikationen des Programmierers und sein Wunsch, korrekten und genauen Code zu schreiben, der ein Minimum an...

In diesem Artikel werden wir es lernen Datenbankabfragen per PHP versenden. Dieser Artikel ist sehr wichtig und Sie müssen ihn verstehen. Ich kann Sie jedoch beruhigen – das Material ist sehr einfach, sodass es keine Schwierigkeiten geben sollte.

Bevor ich zum Thema des Artikels übergehe, warne ich Sie vorab, dass ich nicht im Detail analysieren werde SQL-Sprache. Alle notwendigen Informationen sind in der entsprechenden Kategorie aufgeführt, aber hier nur Arbeiten mit MySQL über PHP.

Kommen wir nun zu Senden von Datenbankabfragen in PHP:


}
$mysqli->query("INSERT INTO mytable (name, email) VALUES ("MyName", " [email protected]")");
$mysqli->close();
?>

IN in diesem Beispiel Wir haben eine Verbindung zur Datenbank hergestellt, überprüft, ob die Verbindung erfolgreich war, und eine Anfrage mit der Methode gesendet Abfrage(), und schloss dann die Verbindung. Wie Sie sehen, ist alles sehr einfach. Um irgendwelche zu senden SQL-Abfragen Nur eine Methode reicht aus – Abfrage(), also ist in diesem Fall alles unglaublich einfach.

Jetzt machen wir die Aufgabe etwas komplizierter. Schauen wir uns die zurückgegebenen Abfragen an result_set- Ergebnis. Die beliebteste Rücksendeanfrage result_set ist eine Auswahl von Daten aus einer Tabelle. Im folgenden Beispiel werden wir Daten abtasten und dann das Ergebnis anzeigen:

$mysqli = @new mysqli("localhost", "Admin", "pass", "mybase");
if (mysqli_connect_errno()) (
echo „Verbindung fehlgeschlagen: „.mysqli_connect_error();
}
$result_set = $mysqli->
while ($row = $result_set->fetch_assoc()) (
print_r($row);
Echo“
";
}
$result_set->close();
$mysqli->close();
?>

Lassen Sie mich zunächst ein wenig erklären, was es ist. result_set. Ergebnismenge- Dies ist eine Tabelle mit dem Ergebnis. Diese Tabelle enthält eine Reihe von Datensätzen (Tabellenzeilen). Und um alle Datensätze anzuzeigen, müssen Sie jede Zeile der Tabelle durchlaufen und anzeigen. Und jetzt erkläre ich es anhand eines Beispiels: Nach dem Absenden einer Anfrage generieren wir result_set. Dann weisen wir der Variablen in einer Schleife zu Reihe der Wert der nächsten Zeile, also ein eindimensionales Array, das die Methode zurückgibt fetch_assoc(). Wenn alle Zeilen beendet sind, wird die Methode fetch_assoc() wird zurückkehren FALSCH, und die Schleife wird beendet. Innerhalb der Schleife während Wir geben das Array einfach mit der Debug-Funktion aus print_r(), obwohl es sicherlich mit abgeleitet werden könnte für jede, aber jetzt ist das nicht notwendig.

Lassen Sie uns kurz zusammenfassen, wie man damit arbeitet result_set:

  1. Erhalten result_set durch Senden einer entsprechenden Anfrage an die Datenbank.
  2. In der Schleife bei jeder Iteration zuweisen nächste Zeile(Aufnahme) von result_set mit der Methode fetch_assoc() eine Variable Reihe. Dann können Sie mit dieser Variablen als eindimensionales assoziatives Array arbeiten, in dem die Schlüssel die Namen der Tabellenfelder sind und die Werte dem aktuellen Datensatz entsprechen.
  3. Unbedingt schließen result_set Methode schließen() Ressourcen zu verbrauchen.

Wie Sie bemerkt haben, die Methode fetch_assoc() gibt immer den nächsten Datensatz zurück. Das heißt, zuerst der 1., dann der 2., dann der 3. und so weiter. Wenn Sie über gute Programmiererfahrung verfügen, werden Sie aufgrund des internen Zeigers, den Sie natürlich bewegen können, sofort vermuten, dass dies geschieht. Wo wird es verwendet? Dies kann beispielsweise verwendet werden, wenn Sie damit arbeiten müssen result_set Nicht 1 , A 2 und noch öfter. Um zu vermeiden, dass dieselbe Anfrage erneut generiert wird, können Sie den Zeiger einfach an den Anfang bewegen. Und dann können Sie wieder mit roher Gewalt beginnen result_set mit der Methode fetch_assoc().

Es gibt eine Methode zum Ändern der Position des Zeigers data_seek(), die eine ganze Zahl annimmt 0 Vor " Anzahl der Datensätze - 1", dementsprechend wird der Zeiger auf den Eintrag gesetzt, der dem Parameter entspricht:

$mysqli = @new mysqli("localhost", "Admin", "pass", "mybase");
if (mysqli_connect_errno()) (
echo „Verbindung fehlgeschlagen: „.mysqli_connect_error();
}
$result_set = $mysqli->query("SELECT * FROM mytable");
$result_set->num_rows;
while ($row = $result_set->fetch_assoc()) (
print_r($row);
Echo“
";
}
$result_set->data_seek(0);
while ($row = $result_set->fetch_assoc()) (
print_r($row);
Echo“
";
}
$result_set->close();
$mysqli->close();
?>

In diesem Beispiel haben wir eine Ausgabe Anzahl der Datensätze in result_set Eigentum nutzen num_rows. Wir haben uns auch mit der Methode vertraut gemacht data_seek(). Das heißt, wir haben das gesamte Ergebnis durchlaufen und dann einen Zeiger auf zurückgegeben 0 aufzeichnen und das Ergebnis noch einmal durchgehen.

In diesem Artikel haben wir das Herstellen einer Verbindung zur Datenbank und das Schließen der Verbindung wiederholt. Und auch herausgefunden wie man eine Datenbank über PHP abfragt. Gelernt, wie man result_set erhält und wie man damit arbeitet. Das ist alles, was Sie wissen müssen, um erfolgreich zu sein Arbeiten mit MySQL in PHP.

DBMS MySQL ist eine der vielen in PHP unterstützten Datenbanken. Das MySQL-System wird kostenlos verteilt und verfügt über ausreichend Leistung, um echte Probleme zu lösen.

Eine kurze Einführung in MySQL

SQL ist eine Abkürzung für die Wörter Strukturierte Abfragesprache, was für Structured Query Language steht. Diese Sprache ist ein Standardwerkzeug für den Zugriff auf verschiedene Datenbanken.

Das MySQL-System ist ein Server, zu dem Benutzer auf Remote-Computern eine Verbindung herstellen können.

Um mit Datenbanken zu arbeiten, ist es praktisch, das im Web Developer Kit enthaltene Tool zu verwenden: Denwer phpMyAdmin. Hier können Sie eine neue Datenbank erstellen, eine neue Tabelle in der ausgewählten Datenbank erstellen, die Tabelle mit Daten füllen sowie Daten hinzufügen, löschen und bearbeiten.

MySQL definiert drei grundlegende Datentypen: numerisch, Datum/Uhrzeit und Zeichenfolge. Jede dieser Kategorien ist in viele Typen unterteilt. Die wichtigsten:


Jede Spalte enthält nach ihrem Datentyp weitere Spezifizierer:

TypBeschreibung
NICHT NULLAlle Tabellenzeilen müssen einen Wert in diesem Attribut haben. Wenn nicht angegeben, ist das Feld möglicherweise leer (NULL).
AUTO_INCREMENTEine spezielle MySQL-Funktion, die für numerische Spalten verwendet werden kann. Wenn Sie ein solches Feld beim Einfügen von Zeilen in eine Tabelle leer lassen, wird MySQL automatisch eine Generierung durchführen Einzigartiger Wert AUSWEIS. Dieser Wert ist um eins größer als der bereits in der Spalte vorhandene Maximalwert. Jede Tabelle kann nicht mehr als ein solches Feld haben. Spalten mit AUTO_INCREMENT müssen indiziert werden
PRIMÄRSCHLÜSSELDie Spalte ist der Primärschlüssel für die Tabelle. Die Daten in dieser Spalte müssen eindeutig sein. MySQL indiziert diese Spalte automatisch
OHNE VORZEICHENEin Integer-Typ bedeutet, dass sein Wert entweder positiv oder null sein kann
KOMMENTARName der Tabellenspalte

Erstellen einer neuen MySQL-Datenbank DATENBANK ERSTELLEN.

ERSTELLEN SIE EINE DATENBANK, WENN NICHT EXISTIERT `base` STANDARDZEICHENSATZ cp1251 COLLATE cp1251_bin

Erstellen einer neuen Tabelle erfolgt über einen SQL-Befehl TABELLE ERSTELLEN. Die Büchertabelle für eine Buchhandlung enthält beispielsweise fünf Felder: ISBN, Autor, Titel, Preis und Anzahl der Exemplare:

CREATE TABLE-Bücher (ISBN CHAR(13) NOT NULL, PRIMARY KEY (ISBN), Autor VARCHAR(30), Titel VARCHAR(60), Preis FLOAT(4,2), Menge TINYINT UNSIGNED); Um eine Fehlermeldung zu vermeiden, wenn die Tabelle bereits existiert, müssen Sie die erste Zeile ändern, indem Sie den Satz „IF NOT EXISTS“ hinzufügen: CREATE TABLE IF NOT EXISTS Books ...

Zum Gestalten Feld mit automatischer Aktualisierung Mit aktuelles Datum Typ TIMESTAMP oder DATETIME verwenden Sie die folgende Konstruktion:

CREATE TABLE t1 (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);

Zusatz Das Einfügen der Daten in diese Tabelle erfolgt mit dem SQL-Befehl EINFÜGEN. Zum Beispiel:

IN Bücher einfügen (ISBN, Autor, Titel, Preis, Menge) WERTE („5-8459-0184-7“, „Zandstra Mat“, „PHP4 auf eigene Faust in 24 Stunden beherrschen“, „129“, „5“) ;

Um Daten aus einer Tabelle abzurufen, verwenden Sie den Operator WÄHLEN. Es ruft Daten aus der Datenbank ab, indem es Zeilen auswählt, die einem bestimmten Suchkriterium entsprechen. Die SELECT-Anweisung bietet eine ganze Reihe von Optionen und Anwendungsfällen.

Das * gibt an, dass alle Felder erforderlich sind. Zum Beispiel:

WÄHLEN Sie * AUS Büchern;

Um nur auf ein bestimmtes Feld zuzugreifen, müssen Sie seinen Namen in der SELECT-Anweisung angeben. Zum Beispiel:

WÄHLEN Sie Autor, Titel und Preis AUS Büchern;

Um auf eine Teilmenge von Zeilen in einer Tabelle zuzugreifen, müssen Sie ein Auswahlkriterium angeben, das das Konstrukt angibt WO. Um beispielsweise verfügbare, preiswerte Bücher über PHP auszuwählen, müssen Sie eine Abfrage erstellen:

SELECT * FROM Books WHERE Preis % Entspricht einer beliebigen Anzahl von Zeichen, auch Nullzeichen
_ Entspricht genau einem Zeichen

Um sicherzustellen, dass die von einer Abfrage abgerufenen Zeilen in einer bestimmten Reihenfolge aufgelistet werden, wird die Konstruktion verwendet SORTIEREN NACH. Zum Beispiel:

AUSWÄHLEN * AUS BücherN NACH Preis BESTELLEN;

Default Befehl Sortierung geht in aufsteigender Reihenfolge. Sie können die Sortierreihenfolge mit umkehren Stichwort BESCHREIBUNG:

WÄHLEN * AUS DEN BÜCHERN ORDEN NACH Preis DESC;

Sortieren Es sind auch mehrere Spalten möglich. Anstelle der Spaltennamen können Sie auch deren Seriennummern verwenden:

AUSWÄHLEN * AUS BÜCHERN ORDNUNG NACH 4, 2, 3;

Um die zuvor in der Tabelle erfassten Werte zu ändern, müssen Sie den Befehl verwenden AKTUALISIEREN. Beispielsweise wurde der Preis aller Bücher um 10 % erhöht:

UPDATE Bücher SET Preis = Preis * 1.1;

Die WHERE-Klausel beschränkt den UPDATE-Vorgang auf bestimmte Zeilen. Zum Beispiel:

UPDATE Bücher SET Preis = Preis * 1,05 WHERE Preis

Um Zeilen aus der Datenbank zu entfernen, verwenden Sie den Operator LÖSCHEN. Nicht benötigte Zeilen werden mit der WHERE-Klausel angegeben. Einige Bücher wurden beispielsweise verkauft:

Aus Büchern löschen WHERE Menge = 0;

Wenn Sie alle Einträge löschen müssen

TRUNCATE TABLE Tabellenname

Für vollständige Entfernung Tabellen werden verwendet:

DROP TABLE Tabellenname

PHP mit MySQL-Datenbank verbinden

Nachdem Sie mit phpMyAdmin die Datenbank erstellt haben, können Sie damit beginnen, die Datenbank mit der externen Webschnittstelle zu verbinden.

Um mit PHP über das Web auf eine Datenbank zuzugreifen, müssen Sie die folgenden grundlegenden Schritte ausführen:

  • Verbindung zum MySQL-Server herstellen.
  • Auswahl einer Datenbank.
  • Ausführen einer Datenbankabfrage:
    • Zusatz;
    • Streichung;
    • ändern;
    • suchen;
    • Sortierung.
  • Das Ergebnis der Anfrage abrufen.
  • Trennen Sie die Verbindung zur Datenbank.

Um eine Verbindung zu einem Datenbankserver in PHP herzustellen, gibt es eine Funktion mysql_connect(). Seine Argumente sind Computername, Benutzername und Passwort. Diese Argumente können weggelassen werden. Standardmäßig ist Computername = localhost , dann sind Benutzername und Passwort nicht erforderlich. Wenn PHP in Kombination mit verwendet wird Apache-Server, dann können Sie die Funktion verwenden mysql_pconnect(). In diesem Fall verschwindet die Verbindung zum Server nicht, nachdem das Programm beendet oder die Funktion aufgerufen wurde mysql_close(). Funktionen mysql_connect() Und mysql_pconnect() Gibt die Verbindungs-ID zurück, wenn alles erfolgreich war. Zum Beispiel:

$link = mysql_pconnect(); if (!$link) die („Es konnte keine Verbindung zu MySQL hergestellt werden“);

Sobald die Verbindung zum MySQL-Server hergestellt ist, müssen Sie eine Datenbank auswählen. Nutzen Sie dazu die Funktion mysql_select_db(). Sein Argument ist der Datenbankname. Die Funktion gibt true zurück, wenn die angegebene Datenbank vorhanden ist und darauf zugegriffen werden kann. Zum Beispiel:

$db = "Beispiel"; mysql_select_db($db) or die("$db konnte nicht geöffnet werden");

Um Daten hinzuzufügen, zu löschen, zu ändern und auszuwählen, müssen Sie eine SQL-Abfrage erstellen und ausführen. Dafür gibt es in PHP eine Funktion mysql_query(). Sein Argument: eine Abfragezeichenfolge. Die Funktion gibt die Anfrage-ID zurück.

Beispiel 1

Einen Eintrag zu einer Tabelle hinzufügen

Bei jeder Ausführung von Beispiel 1 wird der Tabelle ein neuer Datensatz hinzugefügt, der dieselben Daten enthält. Natürlich ist es sinnvoll, vom Benutzer eingegebene Daten in die Datenbank aufzunehmen.

Beispiel 2.1 zeigt ein HTML-Formular zum Hinzufügen neuer Bücher zur Datenbank.

Beispiel 2.1

HTML-Formular zum Hinzufügen neuer Bücher
ISBN
Autor
Name
Preis
Menge


Die Ergebnisse des Ausfüllens dieses Formulars werden an insert_book.php gesendet.

Beispiel 2.2

Programm zum Hinzufügen neuer Bücher (Datei insert_book.php) Bitte gehen Sie zurück und beenden Sie die Eingabe"); ) $isbn = trim ($_POST["isbn"]); $author = trim ($_POST["author"]); $title = trim ($_POST["title" ] ) ; $isbn = addslashes ($isbn); $author = addslashes ($author); $title = addslashes ($title) ; $db = "sample"; $link = mysql_connect(); if (!$link) die („Es konnte keine Verbindung zu MySQL hergestellt werden“); mysql_select_db ($db) or die („$db konnte nicht geöffnet werden“); $query = „INSERT INTO Books VALUES („“ .$isbn.““, „“.$author . "", "".$title."", "" .floatval($_POST["price"]).", "".intval($_POST["quantity"])."")"; $result = mysql_query ($query); if ($result) echo „Das Buch wurde zur Datenbank hinzugefügt.“; mysql_close ($link); ?>

In Beispiel 2.2 werden die eingegebenen String-Daten von der Funktion verarbeitet addslashes(). Diese Funktion fügt Backslashes vor einfache Anführungszeichen (") ein. Anführungszeichen("), einen Backslash (\) und ein Nullbyte. Tatsache ist, dass solche Zeichen gemäß den Anforderungen der Datenbankabfragesyntax in Anführungszeichen eingeschlossen werden müssen.

Um die Anzahl der Datensätze als Ergebnis einer Abfrage zu ermitteln, verwenden Sie die Funktion mysql_num_rows().

Alle Abfrageergebnisdatensätze können in einer Schleife angezeigt werden. Bevor Sie dies tun, verwenden Sie die Funktion mysql_fetch_ Für jeden Datensatz wird ein assoziatives Array erhalten.

Beispiel 3.1 zeigt ein HTML-Formular zur Suche nach bestimmten Büchern in einer Datenbank.

Beispiel 3.1

HTML-Buchsuchformular
Suche nach:

Was suchen wir:



Die Ergebnisse des Ausfüllens dieses Formulars werden an search_book.php gesendet.

Beispiel 3.2

Bitte gehen Sie zurück und beenden Sie die Eingabe"); $searchterm = addslashes ($searchterm); $link = mysql_pconnect(); if (!$link) die("Es konnte keine Verbindung zu MySQL hergestellt werden"); $db = "sample"; mysql_select_db ($db) or die("$db konnte nicht geöffnet werden"); $query = "SELECT * FROM Books WHERE " .$_POST["searchtype"]." wie „%“.$searchterm.“%““; $result = mysql_query ($query); $n = mysql_num_rows ($result); for ($i=0; $i<$n; $i++) { $row = mysql_fetch_array($result); echo "

".($i+1). $row["title"]. "



"; ) if ($n == 0) echo „Wir haben nichts zu bieten. Entschuldigung"; mysql_close($link); ?>

Alternative Möglichkeit

Buchsuchprogramm (Datei search_book.php) Bitte gehen Sie zurück und beenden Sie die Eingabe“); ; $ result = mysql_query("SELECT * FROM Books WHERE ".$_POST["searchtype"]." like "%".$searchterm."%""); $i=1; while($row = mysql_fetch_array($ Ergebnis) ) ( echo "

".($i++) . $row["title"]."
"; echo "Autor: ".$row["author"]."
"; echo "ISBN: ".$row["ISBN"]."
"; echo "Preis: ".$row["price"]."
"; echo "Menge: ".$row["quantity"]."

"; ) if ($i == 1) echo „Wir haben nichts zu bieten. Entschuldigung"; mysql_close(); ?>

Wie funktioniert also die Webdatenbankarchitektur:

  1. Der Webbrowser des Benutzers gibt eine HTTP-Anfrage für eine bestimmte Webseite aus. Beispielsweise sucht ein Benutzer mithilfe eines HTML-Formulars nach allen Büchern über PHP. Die Formularverarbeitungsseite heißt search_book.php.
  2. Der Webserver empfängt eine Anfrage nach search_book.php, ruft diese Datei ab und gibt sie zur Verarbeitung an die PHP-Engine weiter.
  3. PHP verbindet sich mit dem MySQL-Server und sendet die Anfrage.
  4. Der Server nimmt eine Datenbankanfrage an, verarbeitet sie und sendet das Ergebnis (eine Liste von Büchern) zurück an die PHP-Engine.
  5. Die PHP-Engine beendet die Ausführung des Skripts und formatiert das Anforderungsergebnis in HTML. Anschließend wird das Ergebnis in Form von HTML an den Webserver zurückgegeben.
  6. Der Webserver leitet den HTML-Code an den Browser weiter und der Benutzer kann die angeforderte Buchliste anzeigen.

Verwendung des Transaktionsmechanismus

Am Beispiel des Transaktionsmechanismus wird gezeigt, wie man Geld von einer Person an eine andere überweist

If(mysql_query ("BEGIN") && mysql_query ("UPDATE money SET amt = amt - 6 WHERE name = "Eve"") && mysql_query ("UPDATE money SET amt = amt + 6 WHERE name = "Ida"") && mysql_query ("COMMIT"))( echo "Erfolgreich"; )else( mysql_query ("ROLLBACK"); echo "Nicht erfolgreich"; )

WÄHLEN SIE ... FÜR AKTUALISIERUNG

Wenn Sie mehrere Prozesse ausführen, die Auswahlabfragen für dieselbe Tabelle durchführen, wählen diese möglicherweise gleichzeitig denselben Datensatz aus.

Um die oben genannte Situation zu vermeiden, ist es notwendig, nicht nur eine SELECT-Abfrage auszuführen, sondern deren erweiterte Version, die vielen nicht einmal bekannt ist: SELECT ... FOR UPDATE.

Also bei der Ausführung dieser Anfrage, werden alle betroffenen Datensätze in der Datenbank gesperrt, bis die Sitzung mit der Datenbank abgeschlossen ist oder bis die Datensatzdaten aktualisiert werden. Ein anderes Skript kann blockierte Datensätze erst dann auswählen, wenn eine der genannten Bedingungen eintritt.

Allerdings ist nicht alles so einfach. Sie müssen noch einige weitere Bedingungen erfüllen. Zunächst muss Ihre Tabelle auf der InnoDB-Architektur basieren. Andernfalls funktioniert die Blockierung einfach nicht. Zweitens müssen Sie vor der Auswahl die automatische Abfrage-Festschreibung deaktivieren. Diese. mit anderen Worten automatische Ausführung Anfrage. Nachdem Sie die UPDATE-Anfrage angegeben haben, müssen Sie erneut auf die Datenbank zugreifen und die Änderungen mit dem COMMIT-Befehl festschreiben:

Ich erinnere mich an die Zeiten, als ich noch nicht wusste, was es war MySQL und habe oft im Internet nach solchen Artikeln gesucht. Aber aus irgendeinem Grund wurden sie selten gefunden. Jetzt habe ich beschlossen, einen zu veröffentlichen, damit es nützliche Artikel darüber gibt MySQL Und php da ist noch einer. Ich werde versuchen, alles in einer verständlichen Sprache zu schreiben.

Erste Schritte mit MySQL und PHP

Wir benötigen also zunächst einen lokalen Server, um laufen zu können PHP-Skripte und stellen Sie eine Verbindung zur Datenbank her (im Folgenden werde ich sie DB nennen, was „Datenbank“ bedeutet). Falls Sie es noch nicht haben lokaler Server, dann sollten Sie zunächst Installation und Konfiguration lesen localhost, und beginnen Sie dann mit dem Studium der Datenbank MySQL und sein DBMS (Datenbankverwaltungstool).

Wenn Sie diesen Server bereits haben, dann tun Sie dies. Zunächst möchte ich Ihnen das DBMS vorstellen PHPMyAdmin ermöglicht Ihnen das Verwalten (Hinzufügen, Löschen, Ändern) von Datensätzen in der Datenbank.

Dies ist die Hauptseite DBMS PHPMyAdmin. Von hier aus können Sie Ihre eigene Datenbank erstellen und die erforderlichen Datensätze darin speichern. Dies ist beim Erstellen von Websites sehr praktisch, da die Informationen strukturiert sind und Sie sehr schnell jeden Datensatz aus der Datenbank abrufen können.

Wie bereits erwähnt, der erste Teil des Artikels, Einleitung zu MySQL Und phpmyadmin. Ich denke, jetzt verstehen Sie, was MySQL ist, und wir können beginnen, die Funktionalität von phpmyadmin zu studieren. Um zu beginnen, müssen wir die Datenbank selbst erstellen. Sie wird einen eigenen Namen haben, unter dem wir dann nach ihr suchen werden.

Hier ist die allgemeine Struktur der Datenbank:

Um eine Datenbank zu erstellen, geben Sie in das Eingabefeld unter der Zeile „Neue Datenbank erstellen“ ein (auf Startseite PhpMyAdmin) einen beliebigen Namen (nicht kyrillisch!) für die zukünftige Datenbank. Ich werde eine Datenbank namens „baza“ erstellen. Nun müssen wir dem Datenbankstrukturdiagramm folgen und eine Tabelle erstellen. Hierzu erhalten Sie nach der Erstellung der Datenbank folgendes Fenster:

Hier erstelle ich eine Tabelle mit dem Namen „Benutzer“ und drei Felder darin. Als nächstes fordert uns phpmyadmin auf, die Struktur für jedes Feld festzulegen:

Hier müssen Sie in der Spalte „Feld“ den Namen angeben, in „Typ“ geben wir die Art der Daten an, die dort gespeichert werden (INT ist eine Zahl, VARCHAR ist eine Zeichenfolge oder ein kleiner(!) Text). In „Erweitert“ geben wir dem Feld mit dem Namen „id“ den Parameter „auto_increament“ an, was bedeutet, dass er jedes Mal erhöht wird, wenn Sie Daten eingeben, und wir setzen ihn auf den Parameter „Primärschlüssel“ (setzen Sie einen Kreis), das heißt Anhand der ersten Spalte können wir das Feld eindeutig identifizieren.

„Das Feld eindeutig identifizieren“ bedeutet, dass die Spalte „id“ auch dann angezeigt wird, wenn der Vor- und Nachname gleich ist unterschiedliche Bedeutungen(da es jedes Mal automatisch um eins erhöht wird).

Klicken Sie nun auf „Speichern“. Daher haben wir die Benutzertabelle erstellt, in der wir den Vor- und Nachnamen (die ID muss nicht eingegeben werden, MySQL erledigt alles für uns) in der Benutzerdatenbank speichern können. Wir haben eine Tabelle zum Speichern von Datensätzen erstellt. Wie fügt man sie dort ein? Lesen Sie weiter unten 😉

Wählen Sie „Einfügen“ aus dem Menü und schreiben Sie die erforderlichen Werte in die erforderlichen Felder. Nun erfahren Sie, wie Sie Werte in der Datenbank löschen oder ändern MySQL-Daten aus dem PhpMyAdmin-DBMS... Zum Löschen gehen Sie einfach in das Menü „Durchsuchen“ und klicken Sie auf das rote Kreuz neben dem Eintrag:

Und zum Bearbeiten klicken Sie auf den Stift und ersetzen die erforderlichen Felder. Nun, das ist das Ende der Lektion. Jetzt können Sie die MySQL-Datenbank mit PHPMyAdmin verwalten. In der nächsten Lektion werde ich Ihnen beibringen, wie Sie Daten in der Datenbank speichern, abrufen, löschen und aktualisieren mit PHP. Es ist sehr praktisch und praktisch.

Arbeiten mit MySQL-Datenbank von PHP aus

Daher müssen Sie zunächst lernen, wie Sie eine Verbindung zu einer bereits erstellten Datenbank herstellen. Verwenden Sie dazu den folgenden Code:

Im obigen Code habe ich über die Anmeldung eine Verbindung zum Localhost-Server hergestellt Wurzel für die kein Passwort erforderlich ist (wir geben es daher nicht an). Nachdem wir eine Verbindung zur Datenbank hergestellt haben, können wir alle Vorgänge ausführen, die wir im phpmyadmin-DBMS ausgeführt haben. Das heißt, verschiedene Informationen einfügen, löschen, ändern und abrufen. Nun Punkt für Punkt:

Einfügen von Datensätzen in eine SQL-Datenbank in PHP

$query="INSERT INTO `table` (`specify field`,`specify field`) VALUES ("any value","any value""); $result=mysql_query($query); if($result==true) ( ​​​​echo „Erfolg!“; ) else ( echo „Fehler!
".MySQL-Fehler(); )

Das heißt, das Einfügen erfolgt durch die INSERT-Funktion. Wenn alles gut gelaufen ist, gibt MySQL das Ergebnis „true“ zurück, andernfalls „false“.

Sie können beliebig viele Felder angeben, Hauptsache, sie sind alle in der Datenbank vorhanden. Das heißt, es gibt zum Beispiel eine Tabelle, in der es die Felder „Name“, „Nachname“ und „Stadt“ gibt. Um Werte einzufügen, verwenden wir den folgenden Code:

$query="INSERT INTO `users` (`name`,`nachname`,`city`) VALUES ("Ruslan", "Huzin", "Kokshetau""); $result=mysql_query($query); if($result==true) ( ​​​​echo „Erfolg!“; ) else ( echo „Fehler!
".MySQL-Fehler(); )

Datensätze aus der SQL-Datenbank in PHP löschen

Das Löschen erfolgt mit der DELETE-Funktion. Der Code dafür würde etwa so aussehen:

$query="DELETE FROM `users` WHERE `name`="Ruslan" "; $result=mysql_query($query); if($result==true) ( ​​​​echo „Erfolg!“; ) else ( echo „Fehler!
".MySQL-Fehler(); )

Das heißt, wir löschen alle Zeilen (oder eine) aus der Benutzertabelle, in denen die Namensspalte dem Ruslan-Wert entspricht.

Ändern von Werten in der MySQL-Datenbank in PHP

Wir können auch Änderungen an bestehenden Einträgen in der Tabelle vornehmen. Beispielsweise müssen wir den Wert der Namensspalte in einer Zeile ersetzen, in der die Nachnamenspalte den Wert Huzin hat. Dazu führen wir den folgenden Code aus:

$query="UPDATE `users` SET `name`="myname" WHERE `surname`="Huzin" "; $result=mysql_query($query); if($result==true) ( ​​​​echo „Erfolg!“; ) else ( echo „Fehler!
".MySQL-Fehler(); )

Werte aus der Datenbank abrufen

Jetzt kommt der spaßige Teil. Da wir etwas aufgeschrieben haben, sollten wir es doch zurückbekommen, oder? Beispielsweise müssen wir die gesamte Zeile aus der Benutzertabelle abrufen, in der die Namensspalte „Ruslan“ entspricht. Dazu benötigen wir einen etwas anderen Code als in den ersten Beispielen. Hier ist es:

$query="SELECT * FROM WHERE `name`="Ruslan" "; $result=mysql_query($query); if($result==true) ( ​​​​echo „Erfolg!“; ) else ( echo „Fehler!
".mysql_error(); ) $data=mysql_fetch_array($result); /* Jetzt speichert die Variable Daten aus der Tabelle */

Hier benötigten wir eine weitere Funktion, um die ausgewählten Daten in eine Variable (Array) in PHP zu schreiben. Um auf die ausgewählte Zeile zuzugreifen, schreiben wir so:

$data["Spaltenname"]

Das heißt, um den Nachnamen aus der ausgewählten Zeile zu erhalten (wo der Name Ruslan war), müssen wir als Ausgabe schreiben:

echo $data["Nachname"];

Und wenn Sie aus einer Tabelle auswählen, haben sie SELECT * geschrieben. Dieses Sternchen bedeutet, dass Sie alle Spalten aus der Zeile auswählen müssen. Wenn wir beispielsweise nur den Nachnamen auswählen müssen, schreiben wir SELECT „Nachname“. Und um mehrere Zeilen gleichzeitig aus der Tabelle auszuwählen, benötigen Sie auch eine Schleife, um sie anzuzeigen. Dies ist beispielsweise dann der Fall, wenn mehrere Zeilen mit der Ruslan-Spalte vorhanden sind. Hier ist der Code:

$query="SELECT * FROM WHERE `name`="Ruslan" "; $result=mysql_query($query); while($data=mysql_fetch_array($result)) ( echo $data["name"]."
".$data["Nachname"]."


"; }

Jetzt werden alle Zeilen auf dem Bildschirm angezeigt, deren Namensspalte dem Wert Ruslan entspricht.

Sie haben nun die grundlegenden Steuerfunktionen kennengelernt MySQL-Datenbank direkt von PHP-Skript.

MySQL ist eine Art relationale Datenbank. MySQL ist ein Server, zu dem sich verschiedene Benutzer verbinden können.

Wenn Sie eine Verbindung zum Internet herstellen, geben Sie Ihren Benutzernamen und Ihr Passwort sowie den Namen des Servers ein, zu dem Sie eine Verbindung herstellen? Bei der Arbeit mit MySQL kommt das gleiche System zum Einsatz.

Noch etwas: Was ist eine relationale Datenbank? Relationale Mittel basierend auf Tabellen. Der berühmte Tabellenkalkulationseditor von Microsoft, Excel, ist eigentlich ein Editor für relationale Datenbanken.

Verbindung zum MySQL-Server herstellen

Um in PHP eine Verbindung zu einem MySQL-Server herzustellen, verwenden Sie die Funktion mysqli_connect(). Diese Funktion benötigt drei Argumente: Servername, Benutzername und Passwort.

Die Funktion mysqli_connect() gibt die Verbindungskennung zurück, sie wird in einer Variablen gespeichert und später für die Arbeit mit Datenbanken verwendet.

Verbindungscode des MySQL-Servers:

$link = mysqli_connect("localhost", "root", "");

In diesem Fall arbeite ich auf einem lokalen Computer in Denwere, daher lautet der Hostname „localhost“, der Benutzername „root“ und es gibt kein Passwort.

Die Verbindung muss auch nach Abschluss der Arbeit mit MySQL geschlossen werden. Zum Schließen der Verbindung wird die Funktion mysqli_close() verwendet. Erweitern wir das Beispiel:

$link = mysqli_connect("localhost", "root", ""); if (!$link) die("Fehler"); mysqli_close($link);

Hier haben wir die Verbindungskennung auf Wahrheit überprüft. Wenn mit unserer Verbindung etwas nicht stimmt, wird das Programm nicht ausgeführt, die Funktion die() stoppt seine Ausführung und zeigt eine Fehlermeldung im Browser an.

Verbindungsfehler

Zur Überprüfung der Verbindung werden folgende Funktionen verwendet:

  • mysqli_connect_errno() – gibt den Fehlercode des letzten Verbindungsversuchs zurück. Wenn keine Fehler vorliegen, wird Null zurückgegeben.
  • mysqli_connect_error() – gibt eine Beschreibung des letzten Verbindungsfehlers zum MySQL-Server zurück.
define("HOST", "localhost"); define("DB_USER", "root"); define("DB_PASSWORD", ""); define("DB", "tester"); $link = mysqli_connect(HOST, DB_USER, DB_PASSWORD, DB); /* Verbindung prüfen */ if (mysqli_connect_errno()) ( printf("Verbindung konnte nicht hergestellt werden: %s\n", mysqli_connect_error()); exit(); ) else ( printf("Verbindung erfolgreich hergestellt: %s\n" , mysqli_get_host_info($link)); )

Die Funktion mysqli_get_host_info() gibt einen String zurück, der den Typ der verwendeten Verbindung enthält.

Beachten Sie auch, dass ich mit dem Befehl define alle Verbindungsparameter als Konstanten gespeichert habe. Wenn Sie große Projekte schreiben und viele Dateien eine Verbindung zum MySQL-Server herstellen, ist es praktisch, die Verbindungsparameter in einer separaten Datei zu speichern und diese mithilfe der Funktion „include“ oder „require“ einzufügen.

Auswählen einer Datenbank

Ein MySQL-Server kann mehrere Datenbanken haben. Zunächst müssen wir die Basis auswählen, mit der wir arbeiten möchten. In PHP gibt es hierfür in der Funktion mysqli_connect() einen weiteren Parameter – den Datenbanknamen.

Ich habe es auf meinem Computer über phpMyAdmin mit dem Namen Tester erstellt. Verbinden wir uns damit:

$link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Fehler"); mysql_close($link);

Deshalb haben wir eine Datenbank ausgewählt, mit der wir arbeiten möchten. Aber wie wir wissen, besteht eine relationale Datenbank aus Tabellen, und unsere Datenbank hat noch keine Tabellen. Die Datenbank wird leer, ohne Tabellen erstellt. Tabellen müssen separat hinzugefügt werden. Fügen wir nun mit PHP eine Tabelle hinzu.

Erstellen Sie eine Tabelle

Im Namen der MySQL-Datenbanken steht der SQL-Teil für Structured Query Language, was übersetzt eine strukturierte Abfragesprache bedeutet. Wir schreiben Abfragen in SQL und senden sie vom PHP-Programm an den MySQL-Server.

Um eine Tabelle zu erstellen, müssen wir lediglich den Befehl CREATE TABLE ausführen. Erstellen wir eine Tabelle mit dem Namen „users“, in deren Spalten die Logins (Login-Spalte) und Passwörter (Password-Spalte) der Benutzer gespeichert werden.

$query = "CREATE TABLE-Benutzer(Login VARCHAR(20), Passwort VARCHAR(20))";

In diesem Code haben wir der Variablen $query eine Textzeichenfolge zugewiesen, die eine SQL-Abfrage darstellt. Wir erstellen eine Tabelle mit dem Namen „users“, die zwei Spalten „login“ und „password“ enthält, beide vom Datentyp VARCHAR(20). Wir werden später über Datentypen sprechen. Zunächst möchte ich nur darauf hinweisen, dass VARCHAR(20) eine Zeichenfolge mit einer maximalen Länge von 20 Zeichen ist.

Um unsere Anfrage an den MySQL-Server zu senden, verwenden wir die PHP-Funktion mysqli_query(). Diese Funktion gibt eine positive Zahl zurück, wenn der Vorgang erfolgreich war, und eine falsche Zahl, wenn ein Fehler aufgetreten ist (die Anforderungssyntax ist falsch oder das Programm verfügt nicht über die Berechtigung, die Anforderung auszuführen).

$link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Fehler"); $query = "CREATE TABLE-Benutzer(Login VARCHAR(20), Passwort VARCHAR(20))"; mysqli_query($query); mysqli_close($link);

Die SQL-Abfrage muss nicht in eine Variable geschrieben werden; sie kann direkt als Argument für die Funktion mysql_query() geschrieben werden. Dadurch wird der Code lediglich besser lesbar.

Dieses Skript hat einen Nachteil: Es gibt nichts an den Browser aus. Fügen wir eine Nachricht hinzu:

$link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Fehler"); $query = "CREATE TABLE-Benutzer(Login VARCHAR(20), Passwort VARCHAR(20))"; if (mysqli_query($query)) echo „Die Tabelle wurde erstellt.“; else echo „Tabelle nicht erstellt.“; mysqli_close($link);

Wenn wir dieses Skript erneut ausführen, sehen wir im Browser eine Meldung: „Die Tabelle wurde nicht erstellt.“ Tatsache ist, dass die Tabelle beim ersten Start erstellt wurde und es unmöglich ist, erneut eine Tabelle mit demselben Namen zu erstellen. Wir sind mit einer Fehlersituation konfrontiert, daher ist es an der Zeit, über die Fehlerbehandlung bei der Arbeit mit MySQL zu sprechen.

Fehlerbearbeitung

Beim Debuggen eines Programms benötigen wir möglicherweise genaue Informationen über den Fehler. Wenn in MySQL ein Fehler auftritt, legt der Datenbankserver die Fehlernummer und eine Zeile mit seiner Beschreibung fest. PHP verfügt über spezielle Funktionen, um auf diese Daten zuzugreifen.

  • mysqli_errno() – gibt die Fehlernummer zurück.
  • mysqli_error() – gibt eine Zeichenfolge zurück, die den Fehler beschreibt.

Fügen wir nun die Funktion mysql_error() zu unserem Skript hinzu:

$link = mysql_connect("localhost", "root", "", "tester"); if (!$link) die("Fehler"); $query = "CREATE TABLE-Benutzer(Login VARCHAR(20), Passwort VARCHAR(20))"; if (mysqli_query($query)) echo „Die Tabelle wurde erstellt.“; else echo "Tabelle nicht erstellt: ".mysqli_error(); mysqli_close($link);

Jetzt gibt unser Skript die Zeile an den Browser zurück: „Tabelle nicht erstellt: Tabelle „Benutzer“ existiert bereits.“

Eine Tabelle löschen

Jetzt haben wir also einen Tisch, den wir nicht brauchen. Es ist Zeit zu lernen, wie man Tabellen aus einer Datenbank löscht.

Um eine Tabelle zu löschen, verwenden Sie den Befehl DROP TABLE gefolgt vom Tabellennamen.

$link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Fehler"); $query = "DROP TABLE-Benutzer"; if (!mysqli_query($query)) echo „Fehler beim Löschen der Tabelle: „.mysqli_error(); else echo „Tabelle gelöscht.“; mysqli_close($link);

Ergebnisse

Wir beherrschen also die Grundlagen von MySQL. Was wir gelernt haben:

  • Stellen Sie mit der Funktion mysqli_connect() eine Verbindung zu einer MySQL-Datenbank her.
  • Schließen Sie die Verbindung zum MySQL-Server mit der Funktion mysqli_close().
  • Senden Sie SQL-Abfragen mit der Funktion mysqli_query() an den MySQL-Server.
  • Wir haben die SQL-Abfrage zum Erstellen einer Tabelle gelernt: Tabelle erstellen.
  • Wir haben die SQL-Abfrage zum Löschen einer Tabelle gelernt: Tabelle löschen.
  • Wir haben gelernt, wie man mit den Funktionen mysqli_errno() und mysqli_error() mit Fehlern umgeht.

Anschließend werfen wir einen genaueren Blick auf die MySQL-Datentypen.

Lesen Sie die nächste Lektion:

gastroguru 2017