Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Datenbanken und PHP Grundkurs

Prepared Statements

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Prepared Statements bieten eine Reihe von Vorteilen: Ein großer Vorteil ist, dass dadurch die Abfragelogik von den verwendeten Daten getrennt bleibt. Wie das geht, verdeutlicht das Beispiel eines INSERTs.

Transkript

Wenn Sie Eingaben von Benutzern in SQL-Queries verwenden, besteht die Gefahr, dass der Benutzer versucht, Ihre SQL-Statements zu manipulieren. Dagegen hilft "real escape strings", oder noch besser, die Prepared Statements. Aber erst einmal, um was für ein Problem handelt es sich? Angenommen, Sie wollen irgendeinen Datensatz auslesen, und die Nummer des Datensatzes kommt vom Benutzer, und zum Beispiel erwarten Sie eine Zahl wie 42, und diese wird dann in das SQL-Statement eingebunden. Was passiert aber jetzt, wenn der Benutzer folgendes macht? Er gibt nicht einfach die Zahl 42 an, sondern gibt ein: 42;UPDATE+USER+SET+TYPE="admin"WHERE+ID=23 Dann ergibt es dieses Statement, wo zum einen ein Datensatz ausgelesen wird, aber zum anderen ein Benutzer zusätzliche Rechte erhält. Sowas ist natürlich eine Katastrophe. Sehr gut hilft gegen so etwas die sogenannten Prepared Statements. Der Vorteil bei Prepared Statements ist, dass die eigentlichen Daten, wie zum Beispiel hier eine Zahl, getrennt ist von den Statements, also den SQL-Befehlen. Sehen wir uns an, wie das funktioniert. Als Beispiel wollen wir Daten einfügen, ich definiere mal ein SQL-Statement. Hier "INSERT INTO gerichte". Ich möchte einen Namen und eine Beschreibung einfügen, und dann kommen die Werte, die ich eintragen möchte, und diese stehen in diesen Variablen Name und Beschreibung. Die Besonderheit ist aber jetzt folgende bei den Prepared Statements: Ich verwende an dieser Stelle Platzhalter, und dafür werden die Fragezeichen eingesetzt. So, jetzt kann ich das versuchen, durchzuführen. Ich bereite mal mein if-Statement vor. Ich speichere in einer Variablen "stmt", jetzt versuche zuerst, das vorzubereiten, und da verwende ich "prepare", und diesem "prepare" übergebe ich mein Statement, was ich eben da geschrieben habe. Und wenn das soweit klappt, dann binde ich meine Variablen, und das geht über "bindParam", und da muss ich als erstes den Datentyp angeben. Wir haben es in beiden Fällen, das heißt beim Namen und bei der Beschreibung, mit Strings zu tun, deswegen schreibe ich hier zweimal ein kleines s, dann kommt die erste Variable, und die zweite Variable. Das heißt, diese beiden werden hier verknüpft, und sind dort definiert, und an dieser Stelle habe ich die Platzhalter. Dann kann ich das Ganze ausführen mit "execute", und ich möchte mir dann die Anzahl der veränderten Datensätze ausgeben lassen. Und das kann ich machen mit "stmt", der Eigenschaft "affected_rows". Und dann kann ich das auch wieder schließen. Testen wir mal, ob alles funktioniert hat. Anzahl der veränderten Datensätze: 1. Es hat geklappt. Im Beispiel habe ich s als Formatierungsstring verwendet. Daneben gibt es weitere, also wir hatten Name und Beschreibung, das waren beides Strings, deswegen habe ich das s benutzt. Sie können auch b für BLOB nehmen, was ein großes binäres Objekt ist, Sie können d für Fließkommazahl verwenden, oder sehr häufig natürlich auch i für Integer, und dann werden an der entsprechenden Stelle auch wirklich nur Daten des entsprechenden Typs erwartet. Sie haben am Beispiel eines "INSERT" gesehen, wie man mit Prepared Statements arbeitet. Der große Vorteil ist, dass die Daten von der Logik getrennt werden, und dass die Daten automatisch escaped werden, das heißt, in Bezug auf Sonderzeichen behandelt werden. Wir arbeiten dann mit Platzhaltern, wir bereiten die Anweisung vor, dann binden wir die Parameter und führen das Ganze aus.

Datenbanken und PHP Grundkurs

Erfahren Sie alles, was Sie brauchen, um mit PHP Datenbanken anzusprechen, Daten einzutragen, zu verändern, zu löschen und abzufragen.

1 Std. 44 min (29 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:11.01.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!