WebTec PHP 4
Messer Klausurfragen PDO
Messer Klausurfragen PDO
Kartei Details
Karten | 17 |
---|---|
Sprache | Deutsch |
Kategorie | Informatik |
Stufe | Universität |
Erstellt / Aktualisiert | 24.03.2018 / 24.03.2018 |
Weblink |
https://card2brain.ch/box/20180324_webtec_php_4
|
Einbinden |
<iframe src="https://card2brain.ch/box/20180324_webtec_php_4/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Lernkarteien erstellen oder kopieren
Mit einem Upgrade kannst du unlimitiert Lernkarteien erstellen oder kopieren und viele Zusatzfunktionen mehr nutzen.
Melde dich an, um alle Karten zu sehen.
1. Skizzieren Sie ein kleines Beispiel für den ersten PHP-Zugriff auf eine MySQL-Datenbank. Benutzen Sie dazu das PDO-Objekt.
...
$db= new PDO($DSN,$DB_USER,$DB_PW,$DB_options);
...
2. Wenn Sie mit PDO auf eine Datenbank erstmalig zugreifen, kann es sein, dass eine Exception geworfen wird. Skizzieren Sie das syntaktische Schema in PHP, wenn Exceptions geworfen werden.
…
try {
$db= new PDO($DSN,$DB_USER,$DB_PW,$DB_options);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
} catch(PDOException $err) {
echo 'DB ERROR: '.$err->getMessage().PHP_EOL;
}
3. Was bedeutet PDO? Und welchen Sinn hat diese Klasse? Warum sollte PDO statt der Software vom Datenbank-Hersteller verwendet werden?
PDO=Portable Data Object
abstrahiert von den verschiedenen Schnittstellen zu den Datenbanken – aber nur syntaktisch. Die speziellen Eigenschaften der SQL-Dialekte der jeweiligen Datenbanken bleiben jedoch erhalten!
Wrapperklasse für Schnittstelle für Datenbanken
4. Wie wird mit PDO ein SQL-Statement, das keine Daten aus der Datenbank an den Aufrufer liefert, an die Datenbank abgesetzt?
Mit dem EXEC-Statement. QUERY-Statement liefert hingegen immer Daten
5. Wie wird mit PDO ein SELECT-Statement, das Daten an den Aufrufer liefert, an die Datenbank abgesetzt?
Es wird mit Hilfe der Methode – query($SQLStatment) abgesetzt.
6. Mit welcher PDO-Routine kann auf das Ergebnis eines SELECTs zugegriffen werden? Nennen Sie zwei Möglichkeiten.
fetch() liest die nächste Zeile des letzten Querys.
fetchall() liest die ganze Tabelle in ein Array ein.
7. Warum müssen vor der Verarbeitung von Formularen immer alle Daten geprüft werden? Beschreiben Sie einen Problemfall.
Weil ungeprüfte Formulardaten ein Sicherheitsrisiko darstellen. Über eine Sql-Injection kann
ein SQL-Statement ausgeführt werden. Oder es kann zu Fehlern in der Datenbank führen.
9. Worin liegt die Idee bei den Prepared Statements? Nennen Sie einen Anwendungsfall, bei dem die Benutzung von derartigen Statements einen Vorteil bringt.
Prepared Statments sind gut, wenn man mehrmals den gleichen SQL Befehl benutzen möchte, aber jedes Mal mit anderen Parametern.
Wenn man Datensätze, die schon in einem Programm exzitieren, zur Tabelle hinzufügen möchte, soll er Prepare Statment benutzen anstatt jedes Mal ein neues SQL zu schreiben.
10.Was wird unter SQL-Injection verstanden?
Das “Einschleusen“ von schädlichen SQL Statements über schlecht programmierte Scripte
11.Lassen sich mit Prepared Statements SQL-Injection-Angriffe verhindern? Falls ja, woran liegt das?
Ja. In prepared Statment werden alle Parameter zuerst zum gegebenen File-Typ konvertiert und denn an den SQL Server geschickt. Nicht wird als Code intereptiert.
12.Sie wollen mit Hilfe von Prepared Statements eine neue Zeile z.B. in die Tabelle "Address" einfügen. Wie sieht das SQL-Insert-Statement aus?
„INSERT INTO Address(Strasse, Hausnummer, Stadt, PLZ) Values (?,?,?,?)”
13.Es gibt zwei Möglichkeiten die Parameter für ein SQL-Statement bei den Prepared Statements anzugeben. Beschreiben Sie beide
BindValue() – der Wert wird direkt übergeben.
BindParam() – der Wert wird durch ein Referenz gegeben. (zwischen die Dekleration und der Excute, kann der Wert sich ändern)
14.Welche der zwei Möglichkeiten die Parameter für ein SQL-Statement bei den Prepared Statements sollten Sie benutzen - und warum?
BindValue() – der Wert wird direkt übergeben.
BindParam() – der Wert wird durch ein Referenz gegeben. (zwischen die Dekleration und der Excute, kann der Wert sich ändern)
15.Wie sieht das syntaktische Schema für Transaktionen bei der Benutzung von PDO aus?
$PDO->beginTransaction();
…
$PDO->commit();
//$PDO->rollBack(); - wenn nötig.
16.Sie wollen Ihren Code möglichst wiederverwendbar gestalten; durch welche Konstruktion können Sie anwendungsspezifische Daten, wie z.B. Passwörter für Datenbanken, vom allgemeinen Code trennen?
Wir können die projektspezifische Daten in einem externen Datei speichern als $Param[name] = wert; und die zur Klasse verbienden.
17.In dem Foliensatz über PHP-PDO wird ein Teil einer Login-Realisierung beschrieben und dabei ein großer Fehler in Punkto IT-Sicherheit gemacht. Welcher? Und wie kann dieser beseitigt werden?
Man soll nie Password als String in einer Klasse speichern. Man soll das Password in einer externen Datei speichern und es referenzieren.
-
- 1 / 17
-