Latest web development tutorials
×

PHP Kurs

PHP Kurs PHP Kurze Einführung PHP installieren PHP Grammatik PHP Variable PHP echo/print PHP Datentypen PHP Konstante PHP Schnur PHP Die Betreiber PHP If...Else PHP Switch PHP Feld PHP Sortieren eines Array PHP Superglobals PHP While Verkehr PHP For Verkehr PHP Funktion PHP Magische Variablen PHP Namespaces PHP Objektorientiert

PHP Form

PHP Form PHP Formularauthentifizierung PHP Form - Erforderliche Felder PHP Form - Überprüfung E-Mail und URL PHP Komplette Formularinstanz PHP $_GET Variable PHP $_POST Variable

PHP Erweiterte Tutorial

PHP Mehrdimensionale Arrays PHP Datum PHP enthalten PHP Datei PHP Datei-Upload PHP Cookie PHP Session PHP E-mail PHP Sicherheit E-mail PHP Error PHP Exception PHP Filter PHP Erweiterte Filter PHP JSON

PHP 7 Neue Funktionen

PHP 7 Neue Funktionen

PHP Datenbank

PHP MySQL Kurze Einführung PHP MySQL Verbindung PHP MySQL Erstellen einer Datenbank PHP MySQL Erstellen Sie eine Datentabelle PHP MySQL einfügen von Daten PHP MySQL Legen Sie mehrere Daten PHP MySQL Prepared Statements PHP MySQL Lesen Sie Daten PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX Kurze Einführung AJAX PHP AJAX Datenbank AJAX XML AJAX Echtzeitsuche AJAX RSS Reader AJAX Abstimmung

PHP Referenzhandbuch

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP Bildverarbeitung PHP RESTful

PHP MySQL vorbereitete Anweisungen

Vorbereitete Anweisungen zu verhindern MySQL Injektion sehr nützlich ist.


Vorbereitete Anweisungen und gebundene Parameter

Vorbereitete Anweisungen für eine Vielzahl von derselben SQL-Anweisung ausgeführt wird, und effizienter auszuführen.

Werke von Prepared Statements wie folgt:

  1. Vorbehandlung: Erstellen Sie eine Vorlage SQL-Anweisung an die Datenbank gesendet. Der Wert des Parameters reserviert "?" Mark. Zum Beispiel:

    INSERT 
    	INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)
  2. Datenbankanalyse, Kompilieren von SQL-Anweisungen Vorlage Abfrageoptimierung ausführen, und speichert das Ergebnis nicht ausgegeben wird.

  3. Ausführung: Schließlich werden die Werte der Parameter an die Anwendung übergeben Bindung (Markierung "?"), Datenbank führt die Anweisungen. Anwendungen können viele Male ausgeführt werden, wenn der Parameterwert nicht gleich ist.

Im Vergleich zur direkten Ausführung von SQL-Anweisungen, vorbereitete Anweisung hat zwei wesentliche Vorteile:

  • Vorbereitete Anweisungen drastisch reduziert Analysezeit, nur eine Abfrage (obwohl die Anweisungen ausgeführt werden).

  • Bound Parameter die Bandbreite des Servers zu reduzieren, müssen Sie nur eine Parameterabfrage statt der gesamten Aussage zu senden.

  • Prepared Statements gegen SQL-Injection ist sehr nützlich, da nach verschiedenen Protokollen verwenden Parameterwerte zu senden, um die Legitimität der Daten zu gewährleisten.


MySQLi vorbereitete Anweisungen

Das folgende Beispiel verwendet die MySQLi in einer vorbereiteten Erklärung, und binden die entsprechenden Parameter:

Beispiele (MySQLi mit Prepared Statements)

<? Php
$ Servername = "localhost";
$ Username = "username";
$ Password = "Passwort";
$ DBNAME = "myDB";

// Verbindung erstellen
$ Conn = new mysqli ($ Servername, $ username, $ password, $ dbname);

// Test-Verbindung
if ($ conn-> connect_error) {
die ( "Verbindung fehlgeschlagen:" $ conn-> connect_error.);
}

// Vorbehandlung und Bindung
$ Stmt = $ conn-> prepare ( "IN MyGuests INSERT (Vorname, Nachname, E-Mail) VALUES (,,) ???");
$ Stmt-> bind_param ( "sss", $ Vorname, Nachname $, $ email);

// Parameter einstellen und ausführen
$ Vorname = "John";
$ Nachname = "Doe";
$ E-Mail = "[email protected]";
$ Stmt-> execute ();

$ Vorname = "Mary";
$ Nachname = "Moe";
$ E-Mail = "[email protected]";
$ Stmt-> execute ();

$ Vorname = "Julie";
$ Nachname = "Dooley";
$ E-Mail = "[email protected]";
$ Stmt-> execute ();

echo "Der neue Datensatz wird erfolgreich eingeführt";

$ Stmt-> close ();
$ Conn-> close ();
?>

Parsing jede Codezeile in den folgenden Beispielen:

"INSERT INTO MyGuests (Vorname, Nachname, E-Mail) VALUES (?,?,?)"

In SQL-Anweisungen verwenden wir das Fragezeichen (?), Hier können wir die Fragezeichen integer, string, double-precision floating-point und Boolesche Werte ersetzen.

Als nächstes wollen wir uns bei bind_param aussehen () Funktion:

$ Stmt-> bind_param ( "sss", $ Vorname, Nachname $, $ email);

Die Funktion bind SQL-Parameter, und sagen Sie den Wert des Datenbankparameter. "SSS" -Spalte Verarbeitungsparameter-Datentypen für die übrigen Parameter. s Charakter erzählt die Datenbank, die die Parameter-String.

Es gibt vier Arten von Parametern:

  • i - integer (ganze Zahl)
  • d - double (double precision floating point)
  • s - string (string)
  • b - BLOB (Binary Large Object: binary large objects)

Jeder Parameter wird benötigt, um die Art zu spezifizieren.

Der Datentyp Parameter teilt die Datenbank, können Sie das Risiko von SQL-Injection zu reduzieren.

Note Hinweis: Wenn Sie zusätzliche Daten (Benutzereingabe) eingefügt werden soll, die Überprüfung der Daten ist sehr wichtig.


PDO Prepared Statements in

Die folgenden Beispiele verwenden wir vorbereitete Anweisungen in PDO und verbindliche Parameter:

Beispiele (PDO Prepared Statements)

<? Php
$ Servername = "localhost";
$ Username = "username";
$ Password = "Passwort";
$ DBNAME = "myDBPDO";

try {
$ Conn = new PDO ( "mysql: host = $ servername; dbname = $ dbname", $ username, $ password);
// Stellen Sie den PDO Fehlermodus Ausnahme
$ Conn-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);

// Vorbehandlung und SQL-Bind Parameter
$ Stmt = $ conn-> prepare ( "INSERT INTO MyGuests (Vorname, Nachname, E-Mail)
VALUES (: Vorname Nachname ,: ,: E-Mail) ");
$ Stmt-> bindParam ( ': Vorname', $ Vorname);
$ Stmt-> bindParam ( ': Nachname', $ name);
$ Stmt-> bindParam ( ': E-Mail', $ E-Mail);

// Zeile einfügen
$ Vorname = "John";
$ Nachname = "Doe";
$ E-Mail = "[email protected]";
$ Stmt-> execute ();

// Eine weitere Zeile einfügen
$ Vorname = "Mary";
$ Nachname = "Moe";
$ E-Mail = "[email protected]";
$ Stmt-> execute ();

// Eine weitere Zeile einfügen
$ Vorname = "Julie";
$ Nachname = "Dooley";
$ E-Mail = "[email protected]";
$ Stmt-> execute ();

echo "Der neue Datensatz wird erfolgreich eingeführt";
}
catch (PDOException $ e)
{
.. Echo $ sql "<br>" $ e-> getMessage ();
}
$ Conn = null;
?>