Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
PHP und MySQL
Objektorientierte
Nutzung der mysqli - Schnittstelle
Waldemar Dell
15.05.2013
WER ICH BIN ?
 Insformatikstudent (WI) an der FH Köln
in Gummersbach
 Programmiert seit 8. Lebensjahr
 Beherrscht über ...
AM ANFANG WAR DAS PROBLEM
 Die erste Version entwickelte 1994 Rasmus Lerdorf, der
eigentlich nur eine Möglichkeit zur Pro...
FUNKTIONSWEISE
4
VERSION NACH VERSION
 1995 PHP / FI (Form Interface/Interpreter) quasi PHP 2
 1999 PHP 3:
Andi Gutmans und Zeev Suraski ...
VERBREITUNG
 PHP wird auf etwa 244 Millionen Webseiten eingesetzt (Stand:
Januar 2013) und wird auf ca. 78,8 % aller Webs...
SPRACHMERKMALE VON PHP
 Dynamische Typisierung
 Erlaubt prozedurale, aber auch klassenbasierte, objektorientierte
Progra...
LAMP – WAMP - WIMP
 Linux / Windows
 Apache / IIS
 MySQL / MariaDB
 PHP – CGI-Modul oder Modul in Apache
 XAMPP
8
PHP FUNKTIONSTEST
Erstellen Sie eine kleine PHP-Datei im „htdocs-Ordner“ mit Namen
phpinfo.php mit folgendem Inhalt:
<?php...
WER C++/JAVA KANN, DER KANN AUCH PHP
Hallo Welt-Beispiel
1: <!DOCTYPE html> <html>
2: <head> <meta charset=“utf-8“ />
3: <...
VARIABLEN
<?php
$text = "Ich bin ein String !";
echo $text;
Ich bin ein String !
echo "<br>";
echo $text,$text,$text;
echo...
SCHLEIFEN AS USUAL
12
DO-WHILE
FOR
Aktueller Zähler: 0
Aktueller Zähler: 1
Aktueller Zähler: 2
Aktueller Zähler: 3
Aktuell...
WENN… BEDINGUNGEN
<?php
$tag = date("l");
if ($tag =="Monday") echo "Heute ist Montag";
if ($tag =="Tuesday") echo "Heute ...
FUNKTIONEN
<?php
function tag ($anzahl)
{
$sekunden = 3600 * 24 * $anzahl;
return $sekunden;
}
$tag = 7;
$x = tag($tag);
e...
PHP GOES OOP – WARUM ?
 Modularisierung: Zerlegung des Software-
Systems in autonome Einheiten.
 Wiederverwendung: Berei...
VORHER: MYSQL PROZEDURAL
16
mysql_close();
KLASSEN UND OBJEKTE
 Klasse: Bauplan für die Erzeugung von Objekten
 Klasse kapselt Daten (Attribute) und Operationen (M...
NACHHER: MYSQL OBJEKTORIENTIERT
18
VERERBUNG UND KONSTRUKTOR
19
Im BaseClass Konstruktor
Im BaseClass Konstruktor
Im SubClass Konstruktor
MAGISCHE METHODEN
PHP reserviert alle Funktionsnamen, die mit __ beginnen, als
magisch.
Die Funktionen __construct(), __de...
HTML  PHP
….
<form method="get" action="tuwas.php">
<input type="text" size="4" name="werta“ />
<input type="text" size="...
ÜBUNG: TASCHENRECHNER
 Erstellen Sie ein Taschenrechnerprogramm, welches zwei Textfelder
verarbeitet und mittels Operatio...
FRAGEN ?
 Was kann PHP nicht?
 Ist es sicher?
Next: MySQLi…
23
MYSQLI - IMPROVED
 Seit PHP 5.2.5
 Der OOP Zugriff ist einheitlich, wodurch arbeiten im Team oder
an Fremdprojekten vere...
MYSQLI - IMPROVED (2)
 Das neue Binärprotokoll von MySQL wird verwendet. Dadurch
stehen mehr Funktionen zur Verfügung und...
PROZ./OOP MYSQL -> MYSQL
 mysql_connect() -> mysqli_connect()
 mysql_query() -> mysqli_query()
 mysql_fetch_array() -> ...
MYSQLI - OBJEKTORIENTIERT
27
MYSQLI – FETCH METHODEN
 mysqli_result::fetch_array — Fetch a result row as an associative, a
numeric array, or both
$zei...
ÜBUNG: ADRESSBUCH
 Erstellen Sie ein Adressbuch, indem man Einträge machen kann
und anzeigen lassen kann.
 Tipp: php.net...
SELECT MAL ANDERS (PREPARE METHODE)
30
INSERT ÜBER PREPARE
31
s = String
i = Integer (Ganzzahl)
d = Double (Gleitkommazahl)
b = BLOB (Binary Large Object -
also ...
PREPARE MIT PLATZHALTERN
32
MEHRFACH-STATEMENTS (MULTI-QUERIES)
33
MULTIQUERY & SQL-INJECTION
 Dem Multi Query kann man quasi unbegrenzt Anweisungen mitgeben,
die mit einer einzigen Anfrag...
VORTEILE
 Die Geschwindigkeit ist wesentlich höher, vor allem bei
Massenabfragen
 Multi-Queries
 Prepared Statements
 ...
36
Nächste SlideShare
Wird geladen in …5
×

Object-orientied way of using mysqli interface - Workshop

589 Aufrufe

Veröffentlicht am

In this workshop I make a little introduction for php and also
I explained the mysqi interface and the object-oriented style of using it.

Veröffentlicht in: Internet
  • Als Erste(r) kommentieren

Object-orientied way of using mysqli interface - Workshop

  1. 1. PHP und MySQL Objektorientierte Nutzung der mysqli - Schnittstelle Waldemar Dell 15.05.2013
  2. 2. WER ICH BIN ?  Insformatikstudent (WI) an der FH Köln in Gummersbach  Programmiert seit 8. Lebensjahr  Beherrscht über 10 Programmiersprachen  Seit 2001 in php-entwicklung involviert  Autor eines Blogs für Androidprogrammierung 2
  3. 3. AM ANFANG WAR DAS PROBLEM  Die erste Version entwickelte 1994 Rasmus Lerdorf, der eigentlich nur eine Möglichkeit zur Programmierung seines eigenen Webservers suchte - Dynamische Seiten  Hieß zu Beginn "Personal Home Page“ danach "PHP HyperText Preprocessor“  Sein Problem: Besucherzähler zu implementieren 3
  4. 4. FUNKTIONSWEISE 4
  5. 5. VERSION NACH VERSION  1995 PHP / FI (Form Interface/Interpreter) quasi PHP 2  1999 PHP 3: Andi Gutmans und Zeev Suraski machten ein Remake mit Lerdorf  2000 PHP 4: Zend Engine 1 – Ausführungsgeschwindigkeit erhöht Sicherheit verbessert, Sessions eingeführt, neue Sprachkonstrukte  2004 PHP 5: Zend Engine 2 – OOP, XML, DOM, Exceptions-Unterstützung, uvam.  2012 PHP 6: Nein PHP 5.4 ! 5
  6. 6. VERBREITUNG  PHP wird auf etwa 244 Millionen Webseiten eingesetzt (Stand: Januar 2013) und wird auf ca. 78,8 % aller Websites als serverseitige Programmiersprache verwendet (Stand: März 2013) Die am häufigsten verwendete PHP-Version ist 5.3 (Stand: März 2013).  MySQL: Forrester berichtete, dass MySQL die höchste Akzeptanrate und das höchste Wachstum verzeichnet. MySQL hat gemäß Forrester weiterhin die größte Marktbedeutung im Open-Source-Datenbankmarkt und hat mit geschätzten 16.000 die höchste Anzahl zahlender Kunden für Produktsupport. 6
  7. 7. SPRACHMERKMALE VON PHP  Dynamische Typisierung  Erlaubt prozedurale, aber auch klassenbasierte, objektorientierte Programmierung.  Eine objektorientiertes PHP Anwendung besteht aus einer Menge von PHP-Klassen, die in Quelltextdateien, die den Regeln der PHP Programmiersprache genügen, deklariert werden.  Diese Quelltextdateien werden vom PHP-Interpeter übersetzt und ausgeführt. 7
  8. 8. LAMP – WAMP - WIMP  Linux / Windows  Apache / IIS  MySQL / MariaDB  PHP – CGI-Modul oder Modul in Apache  XAMPP 8
  9. 9. PHP FUNKTIONSTEST Erstellen Sie eine kleine PHP-Datei im „htdocs-Ordner“ mit Namen phpinfo.php mit folgendem Inhalt: <?php phpinfo(); ?> Ausgabe der Konfigurationseinstellungen 9
  10. 10. WER C++/JAVA KANN, DER KANN AUCH PHP Hallo Welt-Beispiel 1: <!DOCTYPE html> <html> 2: <head> <meta charset=“utf-8“ /> 3: <title>PHP Test</title> 4: </head> 5: <body> 6: <?php echo 'Hello World'; ?> 7: </body> 8: </html> 10
  11. 11. VARIABLEN <?php $text = "Ich bin ein String !"; echo $text; Ich bin ein String ! echo "<br>"; echo $text,$text,$text; echo "<br>"; Ich bin ein String !Ich bin ein String !Ich bin ein String ! 11 $L = "langer"; $K = "kurzer"; echo "Ich bin ein $L$L$L$L$L Text !"; Ich bin ein langerlangerlangerlangerlanger Text ! echo "<br>"; echo "Ich bin ein $K Text !"; Ich bin ein kurzer Text ! echo "<br>"; $I = 10; $J = 5; echo $I,"+",$J,"=",$I+$J; ?> 10+5=15
  12. 12. SCHLEIFEN AS USUAL 12 DO-WHILE FOR Aktueller Zähler: 0 Aktueller Zähler: 1 Aktueller Zähler: 2 Aktueller Zähler: 3 Aktueller Zähler: 4 Aktueller Zähler: 5 Aktueller Zähler: 6 i ist jetzt: 0 i ist jetzt: 1 i ist jetzt: 2 … i ist jetzt: 9 i ist jetzt: 10
  13. 13. WENN… BEDINGUNGEN <?php $tag = date("l"); if ($tag =="Monday") echo "Heute ist Montag"; if ($tag =="Tuesday") echo "Heute ist Dienstag"; if ($tag =="Wednesday") echo "Heute ist Mittwoch"; if ($tag =="Thursday") echo "Heute ist Donnerstag"; if ($tag =="Friday") echo "Heute ist Freitag"; if ($tag =="Saturday") echo "Heute ist Samstag"; if ($tag =="Sunday") echo "Heute ist Sonntag"; ?> Heute ist Mittwoch 13
  14. 14. FUNKTIONEN <?php function tag ($anzahl) { $sekunden = 3600 * 24 * $anzahl; return $sekunden; } $tag = 7; $x = tag($tag); echo "$tag Tage bestehen aus $x Sekunden !"; ?> 7 Tage bestehen aus 604800 Sekunden ! 14
  15. 15. PHP GOES OOP – WARUM ?  Modularisierung: Zerlegung des Software- Systems in autonome Einheiten.  Wiederverwendung: Bereits implementierte Einheiten sollen zu einem neuen Ganzen zusammengesetzt werden können.  Erweiterbarkeit: Bestehende Einheiten sollen um neue Funktionalität erweitert werden können.  Abstraktion und Kapselung: Der Verwender einer solchen Einheit nutzt deren öffentliche Schnittstelle, Implementierungsdetails werden versteckt. 15
  16. 16. VORHER: MYSQL PROZEDURAL 16 mysql_close();
  17. 17. KLASSEN UND OBJEKTE  Klasse: Bauplan für die Erzeugung von Objekten  Klasse kapselt Daten (Attribute) und Operationen (Methoden) in einer Einheit.  Jedem Objekt lässt sich eine Klasse zuordnen.  Den Objekten einer Klasse ist ihre Funktion gemeinsam, da sie über die selben Methoden verfügen.  Die Objekte einer Klasse unterscheiden sich nur in ihrem Zustand von einander. 17
  18. 18. NACHHER: MYSQL OBJEKTORIENTIERT 18
  19. 19. VERERBUNG UND KONSTRUKTOR 19 Im BaseClass Konstruktor Im BaseClass Konstruktor Im SubClass Konstruktor
  20. 20. MAGISCHE METHODEN PHP reserviert alle Funktionsnamen, die mit __ beginnen, als magisch. Die Funktionen __construct(), __destruct(), __call(), __callStatic(), __get(), __set(),__isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), and__clone() , __autoload() sind in PHP-Klassen magisch. 20
  21. 21. HTML  PHP …. <form method="get" action="tuwas.php"> <input type="text" size="4" name="werta“ /> <input type="text" size="4" name="wertb“ /> </form> 21 In PHP: $_GET[‘werta‘]; Eingegebener Wert von Textfeld wert A $_GET[‘wertb‘]; Eingegebener Wert von Textfeld wert B
  22. 22. ÜBUNG: TASCHENRECHNER  Erstellen Sie ein Taschenrechnerprogramm, welches zwei Textfelder verarbeitet und mittels Operationen, das richtige Ergebnis liefert  Tipp: php.net/manual/de (Stand: 2013-05-03)  Vorlage: rechner.zip 22
  23. 23. FRAGEN ?  Was kann PHP nicht?  Ist es sicher? Next: MySQLi… 23
  24. 24. MYSQLI - IMPROVED  Seit PHP 5.2.5  Der OOP Zugriff ist einheitlich, wodurch arbeiten im Team oder an Fremdprojekten vereinfacht wird  Größere Geschwindigkeit - Laut Hersteller kann ein vielfaches an Geschwindigkeit erreicht werden.  Verbesserte Sicherheit - Für die PHP-MySQL Verbindung wird eine SSH-ähnliche Authentifizierung benutzt 24
  25. 25. MYSQLI - IMPROVED (2)  Das neue Binärprotokoll von MySQL wird verwendet. Dadurch stehen mehr Funktionen zur Verfügung und die Verarbeitung ist schneller und effizienter  Keine Standardverbindung und Prepared Statements erzwingen eine saubere und somit sicherere Programmierung  Verbesserte Trace- und Debug-Funktionen  Multi-Queries werden unterstützt 25
  26. 26. PROZ./OOP MYSQL -> MYSQL  mysql_connect() -> mysqli_connect()  mysql_query() -> mysqli_query()  mysql_fetch_array() -> mysqli_fetch_array()  mysqli_query() -> $objekt->query()  mysqli_fetch_array() -> $objekt->fetch_array()  mysqli_num_rows() -> $objekt->num_rows  mysqli_affected_rows() -> $objekt->affected_rows 26 $objekt = new mysqli('localhost', 'root', '', 'address');
  27. 27. MYSQLI - OBJEKTORIENTIERT 27
  28. 28. MYSQLI – FETCH METHODEN  mysqli_result::fetch_array — Fetch a result row as an associative, a numeric array, or both $zeile['name']  mysqli_result::fetch_assoc — Fetch a result row as an associative array  mysqli_result::fetch_field — Returns the next field in the result set  mysqli_result::fetch_object — Returns the current row of a result set as an object $zeile->name  mysqli_result::fetch_row — Get a result row as an enumerated array $zeile[0] , $zeile[1] … 28
  29. 29. ÜBUNG: ADRESSBUCH  Erstellen Sie ein Adressbuch, indem man Einträge machen kann und anzeigen lassen kann.  Tipp: php.net/manual/de (Stand: 2013-05-03)  Vorlage: adress.zip 29
  30. 30. SELECT MAL ANDERS (PREPARE METHODE) 30
  31. 31. INSERT ÜBER PREPARE 31 s = String i = Integer (Ganzzahl) d = Double (Gleitkommazahl) b = BLOB (Binary Large Object - also eine binäre Datei) $eintrag->bind_param( 'issd', 27, 'Werkzeug', 'Schraubenzieher', '39.99'
  32. 32. PREPARE MIT PLATZHALTERN 32
  33. 33. MEHRFACH-STATEMENTS (MULTI-QUERIES) 33
  34. 34. MULTIQUERY & SQL-INJECTION  Dem Multi Query kann man quasi unbegrenzt Anweisungen mitgeben, die mit einer einzigen Anfrage abgearbeitet werden. Das ist wesentlich performanter als mehrere kleine Anweisungen an die DB zu schicken. mysqli_multi_query  $modbereich = $db->real_escape_string( 'Webdesign & Co.' ); mysqli_real_escape_string Characters encoded are NUL (ASCII 0), n, r, , ', ", 34
  35. 35. VORTEILE  Die Geschwindigkeit ist wesentlich höher, vor allem bei Massenabfragen  Multi-Queries  Prepared Statements  Unterstützung von Transaktionen (InnoDB)  SQL-Injections sind nahezu unmöglich  Der Quellcode ist besser strukturiert und die Abfragen sind besser lesbar  PDO ? 35
  36. 36. 36

×