Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Object-orientied way of using mysqli interface - Workshop

586 views

Published on

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.

Published in: Internet
  • Be the first to comment

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

×