SQL-Abfrage zum Hinzufügen und Entfernen von Datensätzen. PHP-Eintrag zur MySQL-Datenbank. Praktische PHP-Beispiele zum Hinzufügen von Daten zu MySQL

In diesem Artikel werden wir uns einige der vielleicht wichtigsten ansehen SQL-Abfragen. Das Abfragen zum Hinzufügen und Entfernen von Datensätzen aus einer Datenbanktabelle. Denn SEHR oft muss man es tun neue Datensätze zur Tabelle hinzufügen, und mach es rein Automatikmodus, dann muss dieses Material untersucht werden.

Zunächst einmal SQL-Abfrage zum Hinzufügen eines neuen Datensatzes zu einer Tabelle:

INSERT INTO Benutzerwerte (Anmeldung, Pass) („TestUser“, „123456“)

Beim Hinzufügen eines Eintrags wird der Befehl „ EINFÜGEN IN", dann der Name der Tabelle, in die wir den Datensatz einfügen. Als nächstes kommen in Klammern die Namen der Felder, die wir ausfüllen möchten. Und dann in Klammern nach dem Wort " Werte„Wir beginnen, die Werte der von uns ausgewählten Felder aufzulisten. Nach der Ausführung dieser Abfrage erscheint ein neuer Eintrag in unserer Tabelle.

Manchmal erforderlich Tabelleneintrag aktualisieren, dafür gibt es Folgendes SQL-Abfrage:

UPDATE-Benutzer SET login = „TestUser2“, pass="1234560" WHERE login="TestUser"

Diese Abfrage ist komplexer, da sie die Konstruktion „ WO", aber mehr dazu weiter unten. Zuerst kommt der Befehl " AKTUALISIEREN", dann der Tabellenname und nach " SATZ„Wir beschreiben die Werte aller Felder, die wir ändern möchten. Es wäre einfach, aber es stellt sich die Frage:“ Welcher Datensatz soll aktualisiert werden?". Deshalb gibt es " WO". In diesem Fall aktualisieren wir den Datensatz, das Feld " Login„Was zählt“ Testbenutzer". Bitte beachten Sie, dass, wenn es mehrere solcher Datensätze gibt, dann Es wird absolut alles aktualisiert! Es ist sehr wichtig, dies zu verstehen, sonst riskieren Sie, Ihren Tisch zu verlieren.

Lass uns noch ein bisschen darüber reden „ WO". Neben einfachen Gleichheitsprüfungen gibt es auch Ungleichungen sowie logische Operationen: UND Und ODER.

UPDATE-Benutzer SET login = „TestUser2“, pass="1234560" WHERE id< 15 AND login="TestUser"

Gegeben SQL-Abfrage wird diese Datensätze aktualisieren, Ausweis davon gibt es weniger 15 UND Feld " Login"Angelegenheiten" Testbenutzer„Ich hoffe, Sie haben das Design verstanden“ WO„Weil es sehr wichtig ist. Genau“ WO" Wird verwendet, wenn Abrufen von Datensätzen aus Tabellen, und dies ist die am häufigsten verwendete Aufgabe bei der Arbeit mit Datenbanken.

Und schließlich einfach SQL-Abfrage zum Löschen von Datensätzen aus einer Tabelle:

LÖSCHEN VON Benutzern WHERE login="TestUser2"

Nach dem Befehl „ LÖSCHEN VON„ ist der Name der Tabelle, in der Sie Datensätze löschen möchten. Als nächstes beschreiben wir die „WHERE“-Konstruktion. Wenn der Datensatz die beschriebenen Bedingungen erfüllt, wird er gelöscht. Achten Sie auch hier darauf, wie viele Datensätze diese erfüllen die Bedingung nach „ WO", beliebig viele davon können gelöscht werden.

Diese Anleitung zeigt Ihnen, wie Sie mit der Verwaltung einer Datenbank von Ihrem aus beginnen PHP Skript. Du wirst lernen Hinzufügen eines Datensatzes zu einer MySQL-Tabelle, verwenden PHP-Code. Bevor Sie beginnen, schauen Sie sich unsere anderen Tutorials an, die die grundlegenden Schritte der Arbeit mit PHP und Datenbanken behandeln – die Verbindung von PHP zu einer MySQL-Datenbank.

Bevor Sie beginnen, prüfen Sie Folgendes:

  • Zugriff auf Ihr Hosting-Kontrollpanel

Schritt 1 – Erstellen einer Tabelle

Zunächst müssen wir eine Tabelle für Ihre Daten erstellen. Dies ist ein sehr einfaches Verfahren, das Sie durchführen können phpMyAdminüber Ihr Hosting-Kontrollpanel. Wir haben den Prozess der Erstellung einer MySQL-Datenbank bereits in einem früheren Tutorial behandelt, daher überspringen wir diesen Teil hier.

Nachdem Sie sich auf der phpMyAdmin-Seite angemeldet haben, sehen Sie ein Bild wie dieses:

Erstellen wir eine Tabelle mit dem Namen Studenten für unsere Datenbank u266072517_name. Über die Schaltfläche können Sie eine neue Tabelle erstellen Tabelle erstellen. Danach werden Sie sehen neue Seite Hier können Sie alle notwendigen Daten für Ihre Tabelle eingeben:

Dies ist der einfachste Weg, eine Tabelle zu erstellen. Weitere Informationen zur Tabellen-/Datenbankstruktur und zu den Einstellungen, die für jedes Feld verwendet werden können, finden Sie in der offiziellen phpMyAdmin-Dokumentation.

Lassen Sie uns hier einige nennen einfache Erklärung Felder, die wir verwenden werden:

  • Name ist der Name Ihres Feldes. Wird ganz oben in Ihrer Tabelle angezeigt.
  • Typ– Hier können Sie den Feldtyp einstellen. Wir wählen zum Beispiel Varchar denn hier müssen wir eine Zeichenfolge mit einem Namen eingeben (der Buchstaben und keine Zahlen enthält).
  • Länge/Werte– wird verwendet, um die maximale Länge Ihres Eintrags in diesem Feld festzulegen.
  • Index– Wir verwenden den „Primär“-Index für unser „ID“-Feld. Beim Erstellen einer Tabelle wird empfohlen, ein ID-Feld zu haben. Es wird zum Indizieren von Datensätzen in einer Tabelle verwendet, wenn Beziehungen zwischen Tabellen konfiguriert werden. Es kann auch hier vermerkt werden „A_I“, was bedeutet Automatisches Inkrementieren. Diese Einstellung erhöht automatisch den Index (1,2,3,4...).

Klicken Speichern und Ihre Tabelle wird erstellt.

Schritt 2 – Erstellen Sie PHP-Code und fügen Sie einen Eintrag zur MySQL-Tabelle hinzu

Option 1 – MySQLi-Methode

Zunächst müssen Sie gemäß unserem vorherigen Tutorial eine Verbindung zur Datenbank herstellen. Danach können wir mit der SQL-Abfrage fortfahren, um einen Datensatz zur MySQL-Tabelle hinzuzufügen EINFÜGEN. Hier ist ein vollständiges Codebeispiel mit Verbindungs- und Einfügemethode:

" . mysqli_error($conn); ) mysqli_close($conn); ?>

Somit ist der erste Teil des Codes (Zeilen 3 – 18 ) beziehen sich auf den Teil zum Aufbau der Datenbankverbindung. Wir werden diesen Teil nicht noch einmal durchgehen. Wenn Sie wissen möchten, was jede Zeile bedeutet, lesen Sie unsere vorherige Anleitung zum Herstellen einer Verbindung zu einer Datenbank.

Beginnen wir mit der Zeile 19 :

$sql = "INSERT INTO Students (name, lastname, email) VALUES ("Thom", "Vial", " [email protected]")";

Dies ist die wichtigste Codezeile, sie erledigt alles, was wir in diesem Tutorial behandeln – das Hinzufügen eines Datensatzes zu einer MySQL-Tabelle in der Datenbank. EINFÜGEN IN ist ein Ausdruck, der der angegebenen MySQL-Datenbanktabelle einen Datensatz hinzufügt. In unserem Beispiel fügen wir Daten zu einer Tabelle hinzu Studenten.

Im weiteren Verlauf definieren wir in Klammern die Tabellenfelder, zu denen wir Werte hinzufügen: (Name, Nachname, E-Mail). Die Daten werden in einer bestimmten Reihenfolge hinzugefügt. Wenn wir schreiben (E-Mail, Nachname, Name), werden die Werte in einer anderen Reihenfolge hinzugefügt.

Nächster Teil der Bedeutung WERTE. Hier legen wir unsere Werte in den zuvor angegebenen Feldern fest. Somit erhält jedes Feld seinen eigenen Wert. In unserem Fall wäre es zum Beispiel so etwas wie: Name = Thom, Nachname = Vial, E-Mail = [email protected] .

Es ist wichtig zu beachten, dass wir uns hier formieren SQL-Abfrage mit PHP-Code. SQL-Abfragen müssen in Anführungszeichen gesetzt werden. In unserem Beispiel ist alles zwischen den Anführungszeichen und nach $sql = eine SQL-Abfrage.

Der nächste Teil des Codes ( 20 – 22 Zeilen) führt unsere Anfrage aus und prüft den Erfolg der Anfrage:

If (mysqli_query($conn, $sql)) ( echo „Neuer Datensatz erfolgreich erstellt“; )

Wenn die Abfrage korrekt ausgeführt wurde, wird eine Erfolgsmeldung angezeigt.

Und der letzte Teil ( 22 – 24 Zeilen) zeigen eine weitere Meldung an, falls unsere Anfrage fehlschlägt:

Else ( echo „Fehler: „ . $sql . „
" . mysqli_error($conn); )

Dieser Code zeigt uns eine Fehlermeldung, falls etwas schief gelaufen ist.

Option 2 – PHP-Datenobjektmethode (PHP-Datenobjekt)

Wie im vorherigen Beispiel müssen wir zunächst eine Verbindung zur Datenbank herstellen, was beim Erstellen eines neuen PDO-Objekts erfolgt – wie das geschieht, wurde im vorherigen Tutorial erläutert. Da es sich bei einer MySQL-Datenbankverbindung um ein PDO-Objekt handelt, müssen wir verschiedene PDO-„Methoden“ (eine Art Funktionen, die Teil eines bestimmten Objekts sind) verwenden, um die Abfrage vorzubereiten und auszuführen. Objektmethoden werden wie folgt aufgerufen:

$the_Object->the_Method();

Mit PDO können Sie SQL-Code „vorbereiten“, bevor Sie ihn ausführen. Die SQL-Abfrage wird vor der Ausführung ausgewertet und angepasst. Somit kann ein einfacher SQL-Injection-Angriff durch das Ausfüllen von SQL-Code in ein Formularfeld durchgeführt werden. Zum Beispiel:

// Der Benutzer schreibt dies in das Feld „Benutzername“ eines Anmeldeformulars thom“; DROP DATABASE user_table; // Die letzte Abfrage wird zu „SELECT * FROM user_table WHERE username = thom“; DROP DATABASE user_table;

Da der SQL-Code syntaktisch korrekt ist, macht das Semikolon aus DROP DATABASE user_table Neue SQL-Abfrage und Ihre Benutzertabelle werden gelöscht. Vorbereitete Ausdrücke erlauben keine Zeichen Und ; um die ursprüngliche Anfrage und die Anweisung zu vervollständigen Drop-Datenbank wird niemals ausgeführt.

Stets Verwenden Sie vorbereitete Abfragen, wenn Sie Daten aus einer Datenbank mit PDO senden oder empfangen.

Um vorbereitete Ausdrücke zu verwenden, müssen Sie eine neue Variable erstellen, die die Methode aufruft vorbereiten() auf dem Datenbankobjekt.

In korrekter Form sieht der Code so aus:

$servername = "mysql.hostinger.com"; $database = "u266072517_name"; $username = "u266072517_user"; $password = "buystuffpwd"; $sql = "mysql:host=$servername;dbname=$database;"; $dsn_Options = ; // Erstellen Sie eine neue Verbindung zur MySQL-Datenbank mithilfe von PDO. $my_Db_Connection ist ein Objekt try ( $my_Db_Connection = new PDO($sql, $username, $password, $dsn_Options); echo "Connected Successful"; ) Catch (PDOException $ Fehler) ( echo " Verbindungsfehler: " . $error->getMessage(); ) // Legen Sie die Variablen für die Person fest, die wir zur Datenbank hinzufügen möchten $first_Name = "Thom"; $last_Name = "Vial"; $email = " [email protected]"; // Hier erstellen wir eine Variable, die die Prepare()-Methode des Datenbankobjekts aufruft // Die SQL-Abfrage, die Sie ausführen möchten, wird als Parameter eingegeben und Platzhalter werden wie folgt geschrieben: Platzhaltername $my_Insert_Statement = $my_Db_Connection-> Prepare("INSERT INTO Students (name, lastname, email) VALUES (:first_name, :last_name, :email)" // Jetzt teilen wir dem Skript mit, auf welche Variable sich jeder Platzhalter tatsächlich bezieht, indem wir die bindParam()-Methode // verwenden Parameter ist der Platzhalter in der obigen Anweisung – der zweite Parameter ist eine Variable, auf die er sich beziehen soll: $my_Insert_Statement->bindParam(:first_name, $first_Name); $my_Insert_Statement->bindParam(:last_name, $last_Name); , $email); // Führen Sie die Abfrage mit den soeben definierten Daten aus // Die Methodeexecute() gibt TRUE zurück, wenn sie erfolgreich ist, und FALSE, wenn dies nicht der Fall ist, sodass Sie hier Ihre eigenen Nachrichten schreiben können, wenn ( $my_Insert_Statement-> ausführen()) ( echo „Neuer Datensatz erfolgreich erstellt“; ) else ( echo „Datensatz konnte nicht erstellt werden“; ) // An dieser Stelle können Sie die Daten der Variablen ändern und erneut ausführen, um weitere Daten zur Datenbank hinzuzufügen $first_Name = "John"; $last_Name = "Smith"; $email = " [email protected]"; $my_Insert_Statement->execute(); // Jetzt erneut ausführen, da sich die Variablen geändert haben if ($my_Insert_Statement->execute()) ( echo "Neuer Datensatz erfolgreich erstellt"; ) else ( echo "Datensatz konnte nicht erstellt werden"; )

In den Zeilen 28, 29 und 30 verwenden wir die Methode bindParam() Datenbankobjekt. Es gibt auch eine Methode bindValue(), anders als die vorherige.

  • bindParam() – Diese Methode zählt die Daten, wenn die Methode ausführen() erreicht. Das erste Mal, dass das Skript die Methode erreicht ausführen() er sieht das $first_Name verweist auf „Thom“, bindet diesen Wert und führt die Abfrage aus. Wenn das Skript die Methode ein zweites Mal erreicht ausführen(), so sieht er aus $first_Name verweist nun auf „John“, bindet diesen Wert und führt die Abfrage erneut mit dem neuen Wert aus. Es ist wichtig zu verstehen, dass wir die Anfrage einmal erstellen und dann an verschiedenen Stellen im Skript unterschiedliche Daten ersetzen.
  • bindValue() – Diese Methode berechnet die Daten, sobald sie an der Reihe ist. Da der Wert $first_Name war auf „Thom“ eingestellt, als wir die Methode erreichten bindValue(), es wird beim Aufruf der Methode verwendet ausführen() Für $my_Insert_Statement.

Bitte beachten Sie, dass wir die Variable wiederverwenden $first_Name und geben Sie ihm ein zweites Mal einen neuen Wert. Wenn Sie Ihre Datenbank überprüfen, nachdem Sie dieses Skript ausgeführt haben, werden im Gegensatz zu diesem Variablenwert beide angegebenen Namen vorhanden sein $first_Name wird am Ende dieses Skripts gleich „John“ sein. Denken Sie daran, dass PHP den Inhalt eines Skripts auswertet, bevor es ausgeführt wird.

Wenn Sie Ihr Skript durch Ersetzen ändern bindParam An bindValue, Sie werden hinzufügen MySQL-Datenbank Geben Sie „Thom Vial“ zweimal in die Datenbank ein und John Smith wird ignoriert.

Schritt 3 – Überprüfen Sie den Erfolg und lösen Sie allgemeine Probleme

Wenn die von uns in der MySQL-Datenbank ausgeführte Abfrage erfolgreich war, wird die folgende Meldung angezeigt:

Häufige Fehler lösen

MySQLi

In allen anderen Fällen wird anstelle der obigen Meldung eine Fehlermeldung angezeigt. Machen wir zum Beispiel einen Syntaxfehler in unserem Code und wir erhalten Folgendes:

Wie wir sehen können, ist der erste Teil des Codes in Ordnung, die Verbindung wurde erfolgreich hergestellt, aber bei der Ausführung unserer SQL-Abfrage ist ein Fehler aufgetreten.

„Fehler: INSERT INTO Students (name, lastname, email) VALUES („Thom“, „Vial“, „ [email protected]") Sie haben einen Fehler in Ihrer SQL-Syntax; überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, um die richtige Syntax zu finden, die Sie in der Nähe von "(Name, Nachname, E-Mail) VALUES ("Thom", "Vial", " verwenden können. [email protected]")" in Zeile 1"

Es ist ein Syntaxfehler aufgetreten, der dazu führt, dass unser Skript fehlschlägt. Der Fehler war hier:

$sql = "INSERT INTO Students (name, lastname, email) VALUES ("Thom", "Vial", " [email protected]")";

Wie Sie sehen, verwenden wir Zahnspange statt runden. Dies ist falsch und führt zu einem Syntaxfehler in unserem Skript.

gU

In Zeile 7 der PDO-Verbindung ist der Fehlerbehandlungsmodus auf „Alle Ausnahmen anzeigen“ eingestellt. Wenn Sie dies aus dem Skript entfernen und die Anfrage fehlschlägt, erhalten Sie keine Fehlermeldung. Wenn Ausnahmen aktiviert sind, werden die spezifischen aufgetretenen Probleme angezeigt. Dies wird im Allgemeinen am besten bei der Entwicklung eines Skripts verwendet, da dadurch möglicherweise Datenbank- und Tabellennamen angezeigt werden, die Sie vor allen Personen verbergen möchten, die möglicherweise unbefugten Zugriff auf Ihre Daten erhalten. Wenn im obigen Fall geschweifte Klammern anstelle von Klammern verwendet wurden, sieht der Fehler wie folgt aus:

Schwerwiegender Fehler: Nicht abgefangene Ausnahme „PDOException“ mit der Meldung „SQLSTATE: Syntaxfehler oder Zugriffsverletzung: 1064. Sie haben einen Fehler in Ihrer SQL-Syntax; Sehen Sie im Handbuch zu Ihrer MySQL-Serverversion nach, welche Syntax in der Nähe von „(Name, Nachname, E-Mail) VALUES („Thom“, „Vial“, „ [email protected]")" in Zeile 1"

Andere Probleme, auf die Sie stoßen können:

  • Die Felder sind falsch angegeben (nicht vorhandene Felder oder falsch geschriebene Namen).
  • Der Werttyp stimmt nicht mit dem Feldtyp überein. Zum Beispiel, wenn wir den Wert einer Zahl zuweisen möchten 47 Feld Name, erhalten wir eine Fehlermeldung, da erwartet wird, dass der Wert eine Zeichenfolge ist. Wenn Sie jedoch beispielsweise eine Zahl in Anführungszeichen angeben, “47” , es wird kein Fehler auftreten, da unsere Nummer als Zeichenfolge in dieses Feld geschrieben wird.
  • Ein Versuch, Daten in eine nicht vorhandene Tabelle einzugeben, oder ein Fehler bei der Schreibweise des Tabellennamens.

Alle diese Fehler können behoben werden, indem Sie die Anleitungen zur Fehlerkorrektur befolgen oder das Fehlerprotokoll überprüfen.

Nachdem wir die Daten erfolgreich hinzugefügt haben, sollten wir sie in unserer Datenbank sehen. Hier ist ein Beispiel für die Tabelle, zu der wir unsere Daten hinzugefügt haben phpMyAdmin.

Abschluss

In diesem Tutorial haben Sie die Verwendung gelernt PHP-Code zum Hinzufügen eines Datensatzes zu einer MySQL-Tabelle verwenden MySQLi Und gU. Wir haben uns auch häufige Fehler und deren Lösungen angesehen. Zu wissen, wie man PHP-Code zum Hinzufügen zu einer MySQL-Datenbank verwendet, ist praktisch, egal ob Sie Programmieren lernen oder bereits Ihre eigene Website erstellen.

Vom Autor: Oh, du kannst die Worte nicht aus dem Lied herausnehmen! Sie können sie jedoch löschen, aktualisieren oder andere einfügen. Hauptsache, die Wörter werden in die Datenbank eingetragen. Heute verraten wir Ihnen, wie Daten in MySQL aufgezeichnet werden und wie Sie es richtig machen, damit das Lied klingt!

Einträge mit phpMyAdmin hinzufügen

Die phpMyAdmin-Shell zur Verwaltung des MySQL-DBMS implementiert eine „leichte“ Additionsfunktion neue Einträge in Datenbanktabellen. Aufgrund seiner Einfachheit ist es sowohl für grüne „Dummies“ als auch für „faule“ Profis ideal.

Einbringen neue Informationen in die Tabelle eintragen, sollten Sie sich mit Administratorrechten im Programm anmelden. Wählen Sie dann aus den Listen links die gewünschte Datenbank und Tabelle aus. Gehen Sie dann im oberen Menü auf den Punkt „Einfügen“.

Um anschließend einen Eintrag in der MySQL-Datenbank zu erstellen, füllen Sie im nächsten Fenster das Feld „Wert“ für alle Spalten aus und klicken Sie unten auf „OK“.

Im obigen Screenshot können Sie sehen, dass die zu ändernde Tabelle „Tiere“ aus zwei Spalten (Feldern) besteht: ID und Name. Der zweite Abschnitt gibt den Typ jeder Spalte an. Wir müssen nur einen Wert für das Namensfeld eingeben, da die ID-Spalte der Primärschlüssel ist und beim Erstellen der Tabelle auf automatische Inkrementierung eingestellt war. Das bedeutet, dass der Wert des ID-Felds automatisch von MySQL generiert wird, indem 1 zum vorherigen ganzzahligen Wert addiert wird.

Um herauszufinden, welches Feld von Datensätzen in MySQL der Primärschlüssel ist, gehen Sie in phpMyAdmin im Menü (mit der links in der Liste ausgewählten Tabelle) zum Reiter „Struktur“ des oberen Menüs. Hier finden Sie eine Beschreibung aller Tabellenfelder, ihres Typs und zusätzlicher Eigenschaften.

Einfügen von Daten mithilfe von SQL-Abfragen

Aber phpMyAdmin ist nur eine Shell, und echte Administratoren „kommunizieren“ mit dem MySQL-Server mithilfe der Structured Query Language. Das heißt, sie „reden“ weiter mit ihm SQL-Sprache. Da wir danach streben, echte Profis zu werden, werden wir uns im Rahmen des betrachteten Themas ein wenig mit dem Studium von SQL-Befehlen befassen. Hier ist eine Abfrage, die Sie in das Feld „SQL“ eingeben, um dieselbe Datenbank zu erstellen:

CREATE TABLE Animal (id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id));

CREATE TABLE Animal (id MEDIUMINT NOT NULL AUTO_INCREMENT ,

name CHAR (30) NOT NULL, PRIMARY KEY (id));

Nachdem Sie die Tabelle erstellt und die Daten in die MySQL-Datenbank geschrieben haben (über die Registerkarte „Einfügen“), werden Sie vom Programm darüber informiert, dass eine Zeile mit dem Identifikatorwert 1 hinzugefügt wurde Es wird der Abfragecode angezeigt, den die Shell für uns generiert und an den Datenbankserver gesendet hat.

Anforderungscode:

INSERT INTO `my_db1`.`animal` (`id`, `name`) VALUES (NULL, „Cat“);

IN „my_db1“ EINFÜGEN. `tier` (`id`, `name`) VALUES (NULL, „Katze“);

Lassen Sie es uns genauer untersuchen. In SQL wird die INSERT-Anweisung verwendet, um eine neue Zeile in eine Tabelle einzufügen. Es teilt dem Server mit, dass die angegebenen Werte (VALUES (NULL, 'Cat') in die Datenbanktabelle (my_db1 . animal) in den Feldern id und name eingefügt werden müssen.

Bitte beachten Sie, dass wir für die ID-Spalte keinen numerischen Wert angeben, sondern NULL, da wir für dieses Feld die automatische Ausfüllung (Autoinkrementierung) „aktiviert“ haben.

So fügen Sie einen Datensatz mit PHP ein

Alles, was wir betrachtet haben, ist nur ein „Vorspiel“ zur Haupthandlung, in der „Seine Hoheit“, die Serversprache, auf die Bühne kommt PHP-Programmierung. Ihm ist es zu verdanken, dass MySQL als DBMS im Internet eine so große Verbreitung erlangte.
Der größte Teil des Internets basiert auf einer Kombination dieser beiden Internettechnologien. weltweites Netz. Wo man auch hinschaut, man findet sie überall: in modernen CMS, „selbst geschriebenen“ Engines und auf dem Server.

Es überrascht nicht, dass Daten darauf geschrieben werden können MySQL PHP bietet so viele integrierte Funktionen. Aber wir werden uns auf die wichtigsten davon konzentrieren. Hier ist der Code, der der Tiertabelle ein neues „Tier“ hinzufügt. Wenn man sich genug anstrengt, kann man auf diese Weise eine ganze Menagerie zusammenstellen :)

$con_str=mysql_connect("localhost", "root", "", "db1");

if(mysql_connect("localhost","root"))( echo "Hallo!!"; ) mysql_select_db("db1",$con_str);

$query_str="INSERT INTO `db1`.`animal` (`id`, `name`) VALUES (NULL, „dog“)“;

mysql_query($query_str);

mysql_close();

$con_str = mysql_connect ("localhost", "root", "", "db1"); if (mysql_connect("localhost" , "root" ) ) (;

echo „Hallo!!“ ;

mysql_select_db("db1", $con_str);

$query_str=

„INSERT INTO `db1`.`animal` (`id`, `name`) VALUES (NULL, „dog“)“

mysql_query($query_str); mysql_close(); Dieser Code muss in eine PHP-Datei eingefügt und auf der Serverseite platziert werden.

Mit der Funktion mysql_connect() verbinden wir uns mit dem MySQL-Datenbankserver. Als Argumente benötigt die Funktion den Host, den DBMS-Benutzernamen, das Passwort und den Namen der Datenbank, zu der Sie eine Verbindung herstellen möchten. Wir haben ein leeres Passwort, weil wir einen Server verwenden, der auf dem lokalen (Client-)Rechner installiert ist. Um alle beschriebenen Beispiele für das Schreiben in eine MySQL-Datenbank zu demonstrieren mit PHP

Wir haben das „Gentleman's Set“ von Denver verwendet. Es umfasst einen lokalen Apache-Server, einen MySQL-Server, phpMyAdmin und mehrere andere nützliche Tools zum Erstellen und Testen von Programmcode. Dann haben wir im logischen if-Block überprüft, ob eine Verbindung zum Datenbankserver besteht. Danach haben wir in der Funktion mysql_select_db() die Datenbank angegeben, zu der wir eine Verbindung herstellen. Mit der Funktion mysql_query() haben wir die in der Variablen $query_str aufgezeichnete SQL-Abfrage gestartet. Und am Ende haben sie geschlossen hergestellte Verbindung

(mysql_close()-Funktion). Wenn wir nun in unsere Menagerie (den Tiertisch) schauen, werden wir dort ein neues „Haustier“ finden.

Um es in MySQL zu schreiben, stellte PHP „freundlicherweise“ den gesamten notwendigen Satz an Funktionen zur Verfügung. Das Wichtigste, woran sich Anfänger verbrennen, ist

In diesem Artikel schauen wir uns an, wie man mit PHP Zeilen in eine MySQL-Datenbank einfügt.

Schritt 1 – Erstellen einer Tabelle

Zuerst müssen Sie eine Tabelle für die Daten erstellen. Dies ist ein einfacher Vorgang, der mit phpMyAdmin in Ihrem Hosting-Kontrollpanel durchgeführt werden kann.

Nachdem Sie sich bei phpMyAdmin angemeldet haben, sehen Sie diese Oberfläche:
Erstellen wir eine Tabelle mit dem Namen Students in der Datenbank u266072517_name, indem wir auf die Schaltfläche „Tabelle erstellen“ klicken. Danach sehen wir eine neue Seite, auf der wir alle notwendigen Tabellenparameter einstellen:

Das ist das Meiste einfache Einrichtung, das für Tisch und Get verwendet werden kann Weitere Informationenüber den Aufbau von Tabellen/Datenbanken.

Spaltenoptionen:

  • Name ist der Spaltenname, der oben in der Tabelle angezeigt wird.
  • Typ – Spaltentyp. Wir haben uns beispielsweise für Varchar entschieden, weil wir Zeichenfolgenwerte eingeben werden.
  • Länge/Werte – Wird verwendet, um die maximale Länge anzugeben, die ein Eintrag in dieser Spalte haben kann.
  • Index – Wir haben den Index „Primär“ für das Feld „ID“ verwendet. Beim Erstellen einer Tabelle wird empfohlen, nur eine Spalte als Primärschlüssel zu verwenden. Es wird zum Auflisten der Datensätze in der Tabelle verwendet und ist beim Einrichten der Tabelle erforderlich. Mir ist auch „A_I“ aufgefallen, was „Auto Increment“ bedeutet – der Parameter für die automatische Vergabe von Datensatznummern (1,2,3,4...).
    Klicken Sie auf die Schaltfläche „Speichern“ und die Tabelle wird erstellt.

Schritt 2: Schreiben Sie PHP-Code, um Daten in MySQL einzufügen.

Option 1 – MySQLi-Methode

Zuerst müssen Sie eine Verbindung zur Datenbank herstellen. Danach verwenden wir die SQL INSERT-Abfrage. Vollständiges Codebeispiel:

" . mysqli_error($conn); ) mysqli_close($conn); ?>

Der erste Teil des Codes (Zeile 3 – 18) dient der Verbindung zur Datenbank.

Beginnen wir mit Zeile 19:

$sql = "INSERT INTO Students (name, lastname, email) VALUES ("Thom", "Vial", " [email protected]")";

Es fügt Daten in eine MySQL-Datenbank ein. INSERT INTO ist eine Anweisung, die Daten zu einer angegebenen Tabelle hinzufügt. In unserem Beispiel werden Daten zur Tabelle „Studenten“ hinzugefügt.

Als nächstes folgt eine Liste von Spalten, in die die Werte eingefügt werden: Name, Nachname, E-Mail. Die Daten werden in der angegebenen Reihenfolge hinzugefügt. Wenn wir geschrieben hätten (E-Mail, Nachname, Name), wären die Werte in einer anderen Reihenfolge hinzugefügt worden.

Der nächste Teil ist die VALUES-Anweisung. Hier geben wir die Werte für die Spalten an: Name = Thom, Nachname = Vial, E-Mail = [email protected].

Wir haben die Anfrage mit PHP-Code ausgeführt. Im Programmcode müssen SQL-Abfragen mit Anführungszeichen maskiert werden. Der nächste Codeabschnitt (Zeile 20-22) prüft, ob unsere Anfrage erfolgreich war:

if (mysqli_query($conn, $sql)) ( echo „Neuer Datensatz erfolgreich erstellt“; )

Dieser Code zeigt eine Meldung an, die angibt, dass die Anfrage erfolgreich war.

Und im letzten Teil (Zeile 22 – 24) wird eine Benachrichtigung angezeigt, wenn die Anfrage nicht erfolgreich war:

else ( echo "Fehler: " . $sql . "
" . mysqli_error($conn); )

Option 2 – PHP Data Object (PDO)-Methode

Zuerst müssen wir eine Verbindung zur Datenbank herstellen, indem wir ein neues PDO-Objekt erstellen. Wenn wir damit arbeiten, verwenden wir verschiedene Methoden gU. Objektmethoden werden wie folgt aufgerufen:

$the_Object->the_Method();

Mit PDO können Sie SQL-Code „vorbereiten“, bevor er ausgeführt wird. Die SQL-Abfrage wird vor der Ausführung ausgewertet und „korrigiert“. Ein einfacher SQL-Injection-Angriff kann beispielsweise durch die einfache Eingabe von SQL-Code in ein Formularfeld durchgeführt werden. Zum Beispiel:

Da es sich um syntaktisch korrektes SQL handelt, macht das Semikolon DROP DATABASE user_table zu einer neuen SQL-Abfrage und die Benutzertabelle wird gelöscht. Vorbereitete Ausdrücke (gebundene Variablen) erlauben keine Semikolons und Anführungszeichen zum Beenden der ursprünglichen Abfrage. Daher wird der Befehl DROP DATABASE niemals ausgeführt.

Um vorbereitete Ausdrücke zu verwenden, müssen Sie eine neue Variable schreiben, die die Prepare()-Methode des Datenbankobjekts aufruft.

Richtiger Code:

getMessage(); ) // Variablen für die Person festlegen, die wir zur Datenbank hinzufügen möchten $first_Name = "Thom"; $last_Name = "Fläschchen"; $email = " [email protected]"; // Erstellen Sie eine Variable, die die Prepare()-Methode des Datenbankobjekts aufruft // Die SQL-Abfrage, die Sie ausführen möchten, wird als Parameter eingegeben und die Platzhalter werden wie folgt geschrieben: Platzhaltername $my_Insert_Statement = $my_Db_Connection->prepare(" INSERT INTO Students ( name, lastname, email) VALUES (:first_name, :last_name, :email)"); // Wir teilen dem Skript nun mit, welche Variable auf jeden Platzhalter verweist, um die bindParam()-Methode zu verwenden // Der erste Parameter ist Der Platzhalter in der obigen Anweisung, der zweite ist die Variable, auf die er verweisen soll. $my_Insert_Statement->bindParam(:first_name, $first_Name); $my_Insert_Statement->bindParam(:last_name, $last_Name); gerade definiert // Die Methode „execute()“ gibt TRUE zurück, wenn erfolgreich, und FALSE, wenn nicht, und gibt Ihnen die Möglichkeit, Ihre eigene if-Nachricht zu drucken ($my_Insert_Statement->execute()) ( echo „New recordcreatedsuccessfully“; ) else ( echo "Unable to createrecord"; ) // An dieser Stelle können Sie die Variablendaten ändern und eine Abfrage ausführen, um der Datenbank weitere Daten hinzuzufügen. Daten zur Datenbank $first_Name = "John"; $last_Name = "Smith"; $email = " [email protected]"; $my_Insert_Statement->execute(); // Erneut ausführen, wenn die Variable geändert wird if ($my_Insert_Statement->execute()) ( echo "New recordcreatedsuccessfully"; ) else ( echo "Unable to createrecord";

In den Zeilen 28, 29 und 30 verwenden wir die bindParam()-Methode des Datenbankobjekts. Es gibt auch eine bindValue()-Methode, die sich stark von der vorherigen unterscheidet.

  • bindParam() – Diese Methode wertet die Daten aus, wenn die Methodeexecute() erreicht wird. Wenn das Skript zum ersten Mal die Methodeexecute() erreicht, stellt es fest, dass $first_Name mit „Thom“ übereinstimmt. Bindet dann diesen Wert und führt die Anfrage aus. Wenn das Skript die zweite Methodeexecute() erreicht, stellt es fest, dass $first_Name nun mit „John“ übereinstimmt. Dann bindet es diesen Wert und führt die Abfrage erneut mit neuen Werten aus. Es ist wichtig, sich daran zu erinnern, dass wir eine Abfrage einmal definiert haben und sie an verschiedenen Stellen im Skript mit unterschiedlichen Daten wiederverwenden.
  • bindValue() – Diese Methode wertet die Daten aus, sobald bindValue() erreicht ist. Da $first_Name auf „Thom“ gesetzt wurde, wird bindValue() jedes Mal verwendet, wenn die Methode „execute()“ für $my_Insert_Statement aufgerufen wird.
    Beachten Sie, dass wir die Variable $first_Name wiederverwenden und ihr ein zweites Mal einen neuen Wert zuweisen. Nach der Ausführung des Skripts werden beide Namen in der Datenbank aufgeführt, obwohl die Variable $first_Name am Ende des Skripts den Wert „John“ hat. Denken Sie daran, dass PHP das gesamte Skript überprüft, bevor es ausgeführt wird.

Wenn Sie das Skript aktualisieren, um bindParam durch bindValue zu ersetzen, fügen Sie „Thom Vial“ zweimal in die Datenbank ein und John Smith wird ignoriert.

Schritt 3 – Erfolg bestätigen und Probleme lösen

Wenn die Anfrage zum Einfügen von Zeilen in die Datenbank erfolgreich war, wird die folgende Meldung angezeigt:

Behebung häufiger Fehler

MySQLi

Andernfalls wird eine Fehlermeldung angezeigt. Machen wir zum Beispiel einen Syntaxfehler im Code und wir erhalten Folgendes:

Der erste Teil des Codes ist in Ordnung, die Verbindung wurde erfolgreich hergestellt, aber die SQL-Abfrage ist fehlgeschlagen.

„Fehler: INSERT INTO Students (name, lastname, email) VALUES („Thom“, „Vial“, „ [email protected]") Sie haben einen Fehler in Ihrer SQL-Syntax. Sehen Sie im Handbuch zu Ihrer MySQL-Serverversion nach, welche Rechtesyntax in der Nähe von "(Name, Nachname, E-Mail) VALUES ("Thom", "Vial", " verwendet werden soll. [email protected]")" in Zeile 1"

Es ist ein Syntaxfehler aufgetreten, der zum Absturz des Skripts geführt hat. Der Fehler war hier:

$sql = "INSERT INTO Students (name, lastname, email) VALUES ("Thom", "Vial", " [email protected]")";

Wir haben geschweifte Klammern anstelle normaler Klammern verwendet. Dies ist falsch und das Skript hat einen Syntaxfehler generiert.

gU

Zeile 7 der PDO-Verbindung setzt den Fehlermodus auf „alle Ausnahmen anzeigen“. Wenn ein anderer Wert festgelegt wird und die Anfrage fehlschlägt, erhalten wir keine Fehlermeldungen.

Diese Einstellung sollte nur bei der Entwicklung eines Skripts verwendet werden. Bei Aktivierung können Datenbank- und Tabellennamen angezeigt werden, die aus Sicherheitsgründen am besten ausgeblendet werden. Im oben beschriebenen Fall, bei dem geschweifte Klammern statt normaler Klammern verwendet wurden, sieht die Fehlermeldung so aus:

Schwerwiegender Fehler: UncaughtException „PDOException“ mit der Meldung „SQLSTATE: Syntaxfehler oder Zugriffsverletzung: 1064“ Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, auf die zu verwendende Rechtesyntax in der Nähe von „(Name, Nachname, E-Mail) VALUES („Thom“, „Vial“, „ [email protected]")" in Zeile 1"

Andere mögliche Probleme:

  • Spalten sind falsch angegeben (nicht vorhandene Spalten oder falsch geschriebene Spaltennamen).
  • Ein Werttyp wird einer Spalte eines anderen Typs zugewiesen. Wenn Sie beispielsweise versuchen, die Zahl 47 in die Spalte „Name“ einzufügen, erhalten Sie eine Fehlermeldung. Diese Spalte muss einen Zeichenfolgewert verwenden. Aber wenn wir eine Zahl in Anführungszeichen angeben würden (z. B. „47“), würde es funktionieren, da es sich um eine Zeichenfolge handelt.
  • Es wurde versucht, Daten in eine Tabelle einzugeben, die nicht existiert. Außerdem gab es einen Schreibfehler im Tabellennamen.

Nach erfolgreicher Eingabe der Daten sehen wir, dass diese zur Datenbank hinzugefügt wurden. Unten finden Sie ein Beispiel für eine Tabelle mit hinzugefügten Daten.

Abschluss

In diesem Artikel haben wir erklärt, wie man mit PHP mithilfe von MySQLi und PDO Daten in eine MySQL-Datenbank einfügt. Und auch, wie man häufige Fehler beseitigt. Dieses Wissen wird Ihnen beim Erlernen des Programmierens und beim Entwickeln Ihrer eigenen Website nützlich sein.

Diese Veröffentlichung ist eine Übersetzung des Artikels „ So verwenden Sie PHP zum Einfügen von Daten in die MySQL-Datenbank", erstellt vom freundlichen Projektteam

In diesem Tutorial schauen wir uns an, wie Sie Daten direkt aus Ihren PHP-Skripten in eine Datenbank einfügen.

Einfügen von Daten mit SQL

Sie verwenden SQL zum Einfügen von Daten in eine Datenbank auf die gleiche Weise, wie Sie SQL zum Erstellen von Datenbanken und Tabellen verwenden. Die SQL-Abfragesyntax lautet:

INTO Tabellennamen einfügen (Spalte1, Spalte 2, ...) WERTE(Wert1, Wert 2, ...)

Wie Sie sehen, können Sie mehrere Spalten in einer einzigen SQL-Anweisung aktualisieren, indem Sie sie in einer durch Kommas getrennten Liste angeben. Sie können aber natürlich auch nur eine Spalte und einen Wert angeben. Spalten, die in dieser SQL-Anweisung nicht erwähnt werden, bleiben leer.

Beispiel: Einfügen einer neuen Person in eine Tabelle

In diesem Beispiel verwenden wir die Datenbank aus Lektion 18. Nehmen wir an, wir möchten eine Person in die Datenbank einfügen. Es könnte sein Gus Goose mit Telefonnummer 99887766 und Geburtsdatum 1964-04-20 .

Die SQL-Anweisung könnte so aussehen:

$strSQL = "INSERT INTO people(FirstName,LastName,Phone,BirthDate) VALUES("Gus","Goose","99887766 ","1964-04-20"");

Wie Sie sehen, können SQL-Anweisungen sehr lang sein und man kann leicht den Überblick verlieren. Daher ist es besser, die SQL-Anweisung etwas anders zu schreiben:

strSQL = "INSERT INTO people("; strSQL = strSQL . „Vorname“,; strSQL = strSQL . „Nachname“, strSQL = strSQL . "Telefon," strSQL = strSQL . "Geburt)"; strSQL = strSQL . "VALUES ("; strSQL = strSQL . ""Gus", "; strSQL = strSQL . ""Gans", "; strSQL = strSQL . ""99887766", "; strSQL = strSQL . „“1964-04-20““); mysql_query($strSQL) oder die(mysql_error());

Hier wird die SQL-Anweisung erstellt, indem der Satz in kleine Teile geteilt und diese dann zu einer Variablen zusammengefasst werden $strSQL.

In der Praxis macht es keinen Unterschied, ob man die eine oder andere Methode verwendet, aber wenn man mit großen Tabellen arbeitet, ist die Fähigkeit, „den Überblick zu behalten“, äußerst wichtig. Wählen Sie daher die am besten geeignete Methode.

Versuchen wir den folgenden Code, um Gus Goose in die Datenbank einzufügen:

Einfügen von Daten in die Datenbank // Verbindung zum Datenbankserver mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error());// Datenbank auswählen mysql_select_db("mydatabase") oder die(mysql_error()); //Erstellen der SQL-Anweisung $strSQL = "INSERT INTO people("; $strSQL = $strSQL . „Vorname“,; $strSQL = $strSQL . „Nachname“,; $strSQL = $strSQL . "Telefon," $strSQL = $strSQL . „Geburtsdatum“; $strSQL = $strSQL . "WERTE("; $strSQL = $strSQL . „Gus“, „; $strSQL = $strSQL . ""Gans", "; $strSQL = $strSQL . ""99887766", "; $strSQL = $strSQL . „“1964-04-20““); // SQL-Anweisung wird ausgeführt mysql_query($strSQL) oder die (mysql_error()); //Verbindung schließen mysql_close();

?>

DB aktualisiert!

Benutzereingaben in der Datenbank speichern

Nehmen wir an, Sie haben ein einfaches Formular: Speichern Dieses Formular wird zur Akte eingereicht

insert.php

, wo Sie, wie in Lektion 11 gezeigt, Benutzereingaben erhalten können, indem Sie den Inhalt des Formulars anfordern. In diesem speziellen Fall könnte die SQL-Anweisung so aussehen:

strSQL = "INSERT INTO people(FirstName) Values("" . $_POST["FirstName"] . "")"

Ebenso können Sie Daten von Cookies, Abfragezeichenfolgensitzungen usw. anfordern.

Die häufigsten Anfängerfehler

Wenn Sie versuchen, die Datenbank zu aktualisieren, erhalten Sie wahrscheinlich zunächst eine Reihe von Fehlermeldungen. Bei der Arbeit mit einer Datenbank sind keinerlei Fehler erlaubt. Ein falsches Komma kann bedeuten, dass die Datenbank nicht aktualisiert wird und Sie eine Fehlermeldung erhalten. Im Folgenden beschreiben wir die häufigsten Fehler.

Ungültiger Datentyp

Wichtig ist, dass Daten und Datentyp der Spalte zueinander passen. Jede Spalte kann Daten eines bestimmten Typs enthalten.

Der folgende Screenshot zeigt die Datentypen der Tabelle „people“ aus unserem Beispiel. Wenn Sie beispielsweise versuchen, Text oder eine Zahl in ein Datenfeld einzufügen, wird ein Fehler ausgegeben. Stellen Sie den Datentyp daher möglichst genau ein. Die häufigsten Datentypen sind unten aufgeführt:
Bedeutung
Datentyp Größe
CHR
Text oder eine Kombination aus Text und Zahlen. Kann auch für Nummern verwendet werden, die nicht in Berechnungen verwendet werden (z. B. Telefonnummern). Bis zu 255 Zeichen – oder die unter „Länge“ angegebene Länge
TEXT
Große Textblöcke oder eine Kombination aus Text und Zahlen. Bis zu 65.535 Zeichen
INT
Numerische Daten für mathematische Berechnungen. 4 Bytes
DATUM
Datumsangaben im Format YYY-MM-DD 4 Bytes
3 Bytes
ZEIT Uhrzeit im Format hh:mm:ss

SQL-Anweisungen mit Anführungszeichen oder Backslashes

Wenn Sie versuchen, Text einzufügen, der einfache Anführungszeichen (") enthält, doppelte Anführungszeichen(") oder einen Backslash (\), wird der Datensatz nicht in die Datenbank eingefügt. Die Lösung besteht darin, Backslashes vor den Zeichen zu ersetzen, die beim Einfügen in Datenbankabfragen mnemonisiert werden müssen.