SlideShare uma empresa Scribd logo
1 de 36
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 10
Programmiersprachen
 Seit 2001 in php-entwicklung involviert
 Autor eines Blogs für
Androidprogrammierung
2
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
FUNKTIONSWEISE
4
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
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
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
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
phpinfo();
?>
Ausgabe der Konfigurationseinstellungen
9
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
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
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
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
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
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
VORHER: MYSQL PROZEDURAL
16
mysql_close();
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
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(), __destruct(), __call(), __callStatic(),
__get(), __set(),__isset(), __unset(), __sleep(), __wakeup(),
__toString(), __invoke(), __set_state(), and__clone() , __autoload()
sind in PHP-Klassen magisch.
20
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
Ü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
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 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
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
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');
MYSQLI - OBJEKTORIENTIERT
27
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
Ü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
SELECT MAL ANDERS (PREPARE METHODE)
30
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'
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 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
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

Mais conteúdo relacionado

Mais procurados

Bestehende WordPress-Seiten auf Multisite migrieren
Bestehende WordPress-Seiten auf Multisite migrierenBestehende WordPress-Seiten auf Multisite migrieren
Bestehende WordPress-Seiten auf Multisite migrierenWalter Ebert
 
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package ManagerEinfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package ManagerLenz Grimmer
 
An Introduction to Ruby On Rails
An Introduction to Ruby On RailsAn Introduction to Ruby On Rails
An Introduction to Ruby On RailsJonathan Weiss
 
Objektorientierte Programmierung mit extbase und fluid
Objektorientierte Programmierung mit extbase und fluidObjektorientierte Programmierung mit extbase und fluid
Objektorientierte Programmierung mit extbase und fluidOliver Klee
 
Interprozesskommunikation mit PHP
Interprozesskommunikation mit PHPInterprozesskommunikation mit PHP
Interprozesskommunikation mit PHPStephan Schmidt
 
WordPress Multisite
WordPress MultisiteWordPress Multisite
WordPress MultisiteWalter Ebert
 
TYPO3 CMS 7.5 - Die Neuerungen - pluswerk
TYPO3 CMS 7.5 - Die Neuerungen - pluswerkTYPO3 CMS 7.5 - Die Neuerungen - pluswerk
TYPO3 CMS 7.5 - Die Neuerungen - pluswerkdie.agilen GmbH
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppetinovex GmbH
 
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...NETWAYS
 
Drupal 8: TWIG Template Engine
Drupal 8:  TWIG Template EngineDrupal 8:  TWIG Template Engine
Drupal 8: TWIG Template Enginedrubb
 
TYPO3 CMS 7.4 - Die Neuerungen - pluswerk
TYPO3 CMS 7.4 - Die Neuerungen - pluswerkTYPO3 CMS 7.4 - Die Neuerungen - pluswerk
TYPO3 CMS 7.4 - Die Neuerungen - pluswerkdie.agilen GmbH
 
Python builds mit ant
Python builds mit antPython builds mit ant
Python builds mit antroskakori
 
TYPO3 CMS 8.1 - Die Neuerungen - pluswerk
TYPO3 CMS 8.1 - Die Neuerungen - pluswerkTYPO3 CMS 8.1 - Die Neuerungen - pluswerk
TYPO3 CMS 8.1 - Die Neuerungen - pluswerkdie.agilen GmbH
 
Javascript done right
Javascript done rightJavascript done right
Javascript done rightDirk Ginader
 
TYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerkTYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerkdie.agilen GmbH
 
MySQL Absicherung und Datensicherung
MySQL Absicherung und DatensicherungMySQL Absicherung und Datensicherung
MySQL Absicherung und DatensicherungLenz Grimmer
 

Mais procurados (20)

Bestehende WordPress-Seiten auf Multisite migrieren
Bestehende WordPress-Seiten auf Multisite migrierenBestehende WordPress-Seiten auf Multisite migrieren
Bestehende WordPress-Seiten auf Multisite migrieren
 
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package ManagerEinfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
 
An Introduction to Ruby On Rails
An Introduction to Ruby On RailsAn Introduction to Ruby On Rails
An Introduction to Ruby On Rails
 
Objektorientierte Programmierung mit extbase und fluid
Objektorientierte Programmierung mit extbase und fluidObjektorientierte Programmierung mit extbase und fluid
Objektorientierte Programmierung mit extbase und fluid
 
Interprozesskommunikation mit PHP
Interprozesskommunikation mit PHPInterprozesskommunikation mit PHP
Interprozesskommunikation mit PHP
 
FLOW3-Workshop F3X12
FLOW3-Workshop F3X12FLOW3-Workshop F3X12
FLOW3-Workshop F3X12
 
WordPress Multisite
WordPress MultisiteWordPress Multisite
WordPress Multisite
 
TYPO3 CMS 7.5 - Die Neuerungen - pluswerk
TYPO3 CMS 7.5 - Die Neuerungen - pluswerkTYPO3 CMS 7.5 - Die Neuerungen - pluswerk
TYPO3 CMS 7.5 - Die Neuerungen - pluswerk
 
Einführung in Puppet
Einführung in PuppetEinführung in Puppet
Einführung in Puppet
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
 
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
 
Drupal 8: TWIG Template Engine
Drupal 8:  TWIG Template EngineDrupal 8:  TWIG Template Engine
Drupal 8: TWIG Template Engine
 
TYPO3 CMS 7.4 - Die Neuerungen - pluswerk
TYPO3 CMS 7.4 - Die Neuerungen - pluswerkTYPO3 CMS 7.4 - Die Neuerungen - pluswerk
TYPO3 CMS 7.4 - Die Neuerungen - pluswerk
 
Symfony2
Symfony2Symfony2
Symfony2
 
Python builds mit ant
Python builds mit antPython builds mit ant
Python builds mit ant
 
TYPO3 CMS 8.1 - Die Neuerungen - pluswerk
TYPO3 CMS 8.1 - Die Neuerungen - pluswerkTYPO3 CMS 8.1 - Die Neuerungen - pluswerk
TYPO3 CMS 8.1 - Die Neuerungen - pluswerk
 
PHP im High End
PHP im High EndPHP im High End
PHP im High End
 
Javascript done right
Javascript done rightJavascript done right
Javascript done right
 
TYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerkTYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerk
 
MySQL Absicherung und Datensicherung
MySQL Absicherung und DatensicherungMySQL Absicherung und Datensicherung
MySQL Absicherung und Datensicherung
 

Destaque (16)

What Make A Strong Password
What Make A Strong PasswordWhat Make A Strong Password
What Make A Strong Password
 
Risk analysis
Risk analysisRisk analysis
Risk analysis
 
Evaluation question 6
Evaluation question 6Evaluation question 6
Evaluation question 6
 
Evaluation question 3
Evaluation question 3Evaluation question 3
Evaluation question 3
 
Twelve tips For Securing Your WiFi
Twelve tips For Securing Your WiFiTwelve tips For Securing Your WiFi
Twelve tips For Securing Your WiFi
 
Google AdSense and your blog
Google AdSense and your blogGoogle AdSense and your blog
Google AdSense and your blog
 
Writing for web
Writing for webWriting for web
Writing for web
 
How To Make A Strong Password
How To Make A Strong PasswordHow To Make A Strong Password
How To Make A Strong Password
 
How to get the most out of your niche blog
How to get the most out of your niche blogHow to get the most out of your niche blog
How to get the most out of your niche blog
 
6 WordPress Security Tips
6 WordPress Security Tips6 WordPress Security Tips
6 WordPress Security Tips
 
Types of Internet Traffic
Types of Internet TrafficTypes of Internet Traffic
Types of Internet Traffic
 
Evaluation question 4
Evaluation question 4Evaluation question 4
Evaluation question 4
 
computer practicals
computer practicalscomputer practicals
computer practicals
 
Mslh sosial klngn remaja dan cara mengatasinya
Mslh sosial klngn remaja dan cara mengatasinyaMslh sosial klngn remaja dan cara mengatasinya
Mslh sosial klngn remaja dan cara mengatasinya
 
cystic pancreatic lesions
cystic pancreatic lesionscystic pancreatic lesions
cystic pancreatic lesions
 
Paraphrasing techniques
Paraphrasing techniquesParaphrasing techniques
Paraphrasing techniques
 

Semelhante a Object-orientied way of using mysqli interface - Workshop

Webanwendungen - Installation, Konfiguration und Administration
Webanwendungen - Installation, Konfiguration und AdministrationWebanwendungen - Installation, Konfiguration und Administration
Webanwendungen - Installation, Konfiguration und AdministrationThomas Siegers
 
Metaprogrammierung und Reflection
Metaprogrammierung und ReflectionMetaprogrammierung und Reflection
Metaprogrammierung und ReflectionStefan Marr
 
Cloud Provisioning mit Juju
Cloud Provisioning mit JujuCloud Provisioning mit Juju
Cloud Provisioning mit JujuFrank Müller
 
JavaScript: Von einfachen Scripten zu komplexen Anwendungen
JavaScript: Von einfachen Scripten zu komplexen AnwendungenJavaScript: Von einfachen Scripten zu komplexen Anwendungen
JavaScript: Von einfachen Scripten zu komplexen Anwendungenmolily
 
Domain Driven Design in Rails
Domain Driven Design in RailsDomain Driven Design in Rails
Domain Driven Design in RailsAngelo Maron
 
Microservices mit Rust
Microservices mit RustMicroservices mit Rust
Microservices mit RustJens Siebert
 
Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)Ulrike Schwinn
 
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresEinführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresMatthias Jauernig
 
Creasoft - Windows powershell
Creasoft - Windows powershellCreasoft - Windows powershell
Creasoft - Windows powershellCreasoft AG
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondUlrich Krause
 
OpenLDAP - A developer's perspective
OpenLDAP - A developer's perspectiveOpenLDAP - A developer's perspective
OpenLDAP - A developer's perspectiveGerrit Beine
 
Übersicht Skriptsprachen
Übersicht SkriptsprachenÜbersicht Skriptsprachen
Übersicht SkriptsprachenA. LE
 
6 - Sprachen des Semantic Web - RDF(S) Frameworks
6 - Sprachen des Semantic Web - RDF(S) Frameworks6 - Sprachen des Semantic Web - RDF(S) Frameworks
6 - Sprachen des Semantic Web - RDF(S) FrameworksSteffen Schloenvoigt
 

Semelhante a Object-orientied way of using mysqli interface - Workshop (20)

Node.js
Node.jsNode.js
Node.js
 
Webanwendungen - Installation, Konfiguration und Administration
Webanwendungen - Installation, Konfiguration und AdministrationWebanwendungen - Installation, Konfiguration und Administration
Webanwendungen - Installation, Konfiguration und Administration
 
Metaprogrammierung und Reflection
Metaprogrammierung und ReflectionMetaprogrammierung und Reflection
Metaprogrammierung und Reflection
 
Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1
 
Cloud Provisioning mit Juju
Cloud Provisioning mit JujuCloud Provisioning mit Juju
Cloud Provisioning mit Juju
 
JavaScript: Von einfachen Scripten zu komplexen Anwendungen
JavaScript: Von einfachen Scripten zu komplexen AnwendungenJavaScript: Von einfachen Scripten zu komplexen Anwendungen
JavaScript: Von einfachen Scripten zu komplexen Anwendungen
 
Domain Driven Design in Rails
Domain Driven Design in RailsDomain Driven Design in Rails
Domain Driven Design in Rails
 
Microservices mit Rust
Microservices mit RustMicroservices mit Rust
Microservices mit Rust
 
Powershell 3.0
Powershell 3.0Powershell 3.0
Powershell 3.0
 
Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)
 
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresEinführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core Middlewares
 
Node.js für Webapplikationen
Node.js für WebapplikationenNode.js für Webapplikationen
Node.js für Webapplikationen
 
Testing tools
Testing toolsTesting tools
Testing tools
 
Creasoft - Windows powershell
Creasoft - Windows powershellCreasoft - Windows powershell
Creasoft - Windows powershell
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyond
 
OpenLDAP - A developer's perspective
OpenLDAP - A developer's perspectiveOpenLDAP - A developer's perspective
OpenLDAP - A developer's perspective
 
Windows Powershell
Windows PowershellWindows Powershell
Windows Powershell
 
NoSQL with MySQL
NoSQL with MySQLNoSQL with MySQL
NoSQL with MySQL
 
Übersicht Skriptsprachen
Übersicht SkriptsprachenÜbersicht Skriptsprachen
Übersicht Skriptsprachen
 
6 - Sprachen des Semantic Web - RDF(S) Frameworks
6 - Sprachen des Semantic Web - RDF(S) Frameworks6 - Sprachen des Semantic Web - RDF(S) Frameworks
6 - Sprachen des Semantic Web - RDF(S) Frameworks
 

Object-orientied way of using mysqli interface - Workshop

  • 1. PHP und MySQL Objektorientierte Nutzung der mysqli - Schnittstelle Waldemar Dell 15.05.2013
  • 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. 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
  • 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. 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. 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. LAMP – WAMP - WIMP  Linux / Windows  Apache / IIS  MySQL / MariaDB  PHP – CGI-Modul oder Modul in Apache  XAMPP 8
  • 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. 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. 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. 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. 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. 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. 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
  • 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
  • 19. VERERBUNG UND KONSTRUKTOR 19 Im BaseClass Konstruktor Im BaseClass Konstruktor Im SubClass Konstruktor
  • 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. 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. Ü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. FRAGEN ?  Was kann PHP nicht?  Ist es sicher? Next: MySQLi… 23
  • 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. 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. 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');
  • 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. Ü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. SELECT MAL ANDERS (PREPARE METHODE) 30
  • 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'
  • 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. 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

Notas do Editor

  1. Lerdorf arbeitete bei Yahoo
  2. und ist damit die am häufigsten verwendete Sprache zum Erstellen von Websites, Tendenz steigend. Zudem ist sie bei den meisten Webhostern vorinstalliert.
  3. PDO über 12 Datenbanken und oop