Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
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
Prochain SlideShare
Chargement dans…5
×

Object-orientied way of using mysqli interface - Workshop

588 vues

Publié le

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.

Publié dans : Internet
  • Soyez le premier à commenter

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

×