PHP + MySQL - technischeredaktion.comtechnischeredaktion.com/webtech/PHP_Folien/07_PHP_MySQL.pdf ·...

22
Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober PHP + MySQL Die MySQL-Datenbank

Transcript of PHP + MySQL - technischeredaktion.comtechnischeredaktion.com/webtech/PHP_Folien/07_PHP_MySQL.pdf ·...

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

PHP + MySQL

Die MySQL-Datenbank

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

Zusammenspiel Apache, PHP, PHPMyAdmin und MySQL

MySQL Datenbank

Nutzer Datei.php

oder Datei.pl

Apache HTTP-Server

PHP Scriptsprache

PHPMyAdmin Verwaltungstool

Perl Scriptsprache

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

Warum eine Datenbank?

• Unabhängigkeit von Anwendung und Datenbank • Standardisierte Abfragesprache (SQL = Structured Query Language) • Sehr hohe Performance auch bei komplizierten Datenbank-Abfragen • Möglichkeit Beziehungen und Abhängigkeiten zwischen Daten herzustellen • Wahrung der Datenkonsistenz: Vermeidung doppelter Datensätze, Vermeidung widersprüchlicher Datensätze • Leichte Sortierung der Daten möglich • Vielfältige Backupstrategien verfügbar/möglich • Leichter Abgleich mehrerer Datenbanken möglich

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

Die MySQL-Datenbank

Ein System zur Strukturierung, Speicherung und Wiedergewinnung von Daten. MySQL ist ein sehr kompaktes und leistungsfähiges relationales Datenbanksystem. Wichtige Leiszungsmerkmale von MySQL sind: - SQL-92-Konformität, - Transaktionen, - Fremdschlüssel, - Volltextsuche, - Unterabfragen, - gespeicherte Prozeduren und Funktionen. MySQL stellt fünf Tabellentypen für unterschiedliche Anwendungsbereiche zur Verfügung: - MyISAM - InnoDB, - BDB, - MERGE - HEAP

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

Technische Funktionalität

Id vorname Nachname

1 Tobias Hauser

2 Christian Wenz

3 Melville Herman

MySQL ist ein RDBMS (Relational-Database-Management-System). In einem einer relationalen Datenbank werden Daten in Tabellen und Spalten abgelegt. Relationales DB-System: RDBS Wenn einzelne Tabellen einer Datenbank in Verbindung zueinander stehen.

id Titel autor

1 Das Website-Handuch 1

2 Javascript & AJAX 2

3 Moby Dick 3

Tabelle autor Tabelle title

Fremdschlüssel Primärschlüssel Primärschlüssel

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

Begrifflichkeiten

Datenbank Ansammlung von strukturierten Daten, ähnlich eines Blatts in Excel (Sheet) Tabellen Eine Datenbank besteht aus mehreren Tabellen. Primärschlüssel Spalte einer Tabelle die eindeutig ist (id, Kundennummer, E-Mail-Adresse). Ergebnisliste Ergebnis einer Datenbankabfrage, in der z.B. einzelne Zeilen aus der DB herausgelesen werden.

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

Wie funktioniert MySQL

• MySQL verwendet als Sprache zur Abfrage/Manipulation von Daten SQL (Structured Query Language).

• Auch zur Manipulation der Datenbankstrukturen (z. B. Tabellen-Definitionen) wird SQL verwendet. MySQL stellt Grundsätzlich zwei Möglichkeiten zur Verfügung SQL Befehle an die Datenbank zu abzusetzen:

• Über das Kommandozeilenprogramm "mysql"

• Über die Schnittstelle der jeweiligen Programmiersprache (mysql_-Befehle) in PHP (mysql_query(), mysql_connect(), mysql_select_db(), mysql_close(), mysql_fetch_array(), )

MySQL speichert die Daten in einem binären Format in Dateien auf dem Datenträger (meistens Festplatte) ab.

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

Einführung in SQL (Structured Query Language)

SQL ist eine sehr mächtige Sprache, da SQL viele Befehle enthält, modular aufgebaut ist und dadurch sehr komplexe Abfragen möglich macht. Es gibt drei Gruppen von Befehlen: DDL (Data-Definition-Language) Befehle zum definieren/manipulieren von Datenbankstrukturen (z.B. Tabellen anlegen, löschen, ändern) CREATE, DELETE, DML (Data-Manipulation-Language) Befehle zum manipulieren von Daten (z.B. Zeile einfügen, löschen, ändern) DCL (Data-Control-Language) Befehle zum Administrieren der Zugangskontrollen der Datenbank (z.B. Benutzer anlegen, Passwörter ändern)

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

Legitimation am Datenbanksystem

<?php $Server = "localhost"; $Benutzer = "Stud"; $Passwort = "Sesam"; mysql_connect($Server,$Benutzer,$Passwort); $result = mysql_query('CREATE DATABASE test_db3'); // Neue DB anlegen if (!$result) { die('Fehler!'); } else { print "Datenbank wurde eingerichtet!"; } ?>

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

Tabelle erstellen

<?php $a="localhost"; $b="Stud"; $c="Sesam"; $d="ex"; mysql_connect($a,$b,$c); mysql_select_db($d); mysql_query("CREATE TABLE adressen8 ( id INT(6) NOT NULL AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(15), VorName VARCHAR(15), Strasse VARCHAR(20), Hausnummer INT(3), Postleitzahl INT(5), Stadt VARCHAR(20))"); mysql_close(); ?>

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

CHAR(10): Zeichenkette. In den runden Klammern steht die Länge des Strings. VARCHAR(5): Zeichenkette mit variabler Länge. INTEGER: Numerischer Wert DOUBLE: Fließkommazahl DATETIME: Datumswert

Die wichtigsten Datentypen

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

Spezifikationen

NOT NULL: Wert darf nie leer sein PRIMARY KEY: Primärschlüssel (id, Kundennummer oder E-Mail-Adresse) AUTO_INCREMENT: Eine id wird automatisch weitergezählt. mysql_query("CREATE TABLE adressen8 ( id INT(6) NOT NULL AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(15), VorName VARCHAR(15), Strasse VARCHAR(20), Hausnummer INT(3), Postleitzahl INT(5), Stadt VARCHAR(20))");

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

Tabelle löschen

<?php $a="localhost"; $b="Stud"; $c="Sesam"; $d="ex"; mysql_connect($a,$b,$c); mysql_select_db($d); mysql_query("DROP TABLE adressen8 "); mysql_close(); print "Tabelle adressen8 wurde geloescht"; ?>

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

Aus einer Datenbanktabelle Daten auslesen

<?php $a="localhost"; $b=„Stud"; $c=„Sesam"; $d=„ex"; mysql_connect($a,$b,$c); mysql_select_db($d); $zeiger = mysql_query("SELECT * FROM adressen8"); $werte = mysql_fetch_array($zeiger); print "Nummer: $werte[0] <br />"; print "Name: $werte[1] <br />"; print "Vorname: $werte[2] <br />"; print "Strasse: $werte[3] $werte[4] <br />"; print "Postleitzahl: $werte[5] <br />"; print "Stadt: $werte[6] <br />"; mysql_close(); ?>

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

Datensatz in Tabelle einlesen

<?php $a="localhost"; $b="Stud"; $c="Sesam"; $d="ex"; mysql_connect($a,$b,$c); mysql_select_db($d); mysql_query("INSERT INTO adressen8 (Name, VorName, Strasse, Hausnummer, Postleitzahl, Stadt) values('Müller','Fritz','Hauptstr.',102,78125,'Pforzheim')"); mysql_close(); ?>

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

Mehrere Datensätze in eine Tabelle einfügen <?php $a="localhost"; $b="Stud"; $c="Sesam"; $d="ex"; mysql_connect($a,$b,$c); mysql_select_db($d); $namen=array("name1"=>array("1","Maier","Fritz","Moltkestr","23","76133","Karlsruhe"), "name2"=>array("2","Kunz","Ute","Karlstr","104","76136","Karlsruhe"), "name3"=>array("3","Gans","Gustav","Ottostr","12","77116","Leonberg"), "name4"=>array("4","Kasper","Lena","Kantstr","122","78378","Kurberg")); foreach ($namen as $wert) { $check = mysql_query("INSERT INTO Adressen (id,Name,VorName,Strasse,Hausnummer,Postleitzahl, Stadt) values ('$wert[0]','$wert[1]','$wert[2]','$wert[3]','$wert[4]','$wert[5]','$wert[6]')"); } mysql_close(); if ($check) { print "Daten wurden eingespeist"; } else { print "Fehler!!!"; } ?>

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

Alle Datensätze aus einer Tabelle auslesen

$zeiger=mysql_query("SELECT * FROM MitarbeiterAdressen"); while($werte = mysql_fetch_array($zeiger)) { print "Zähler: $werte[0] <br>"; print "Name: $werte[1] <br>"; print "Vorname: $werte[2] <br>"; print "Strasse: $werte[3] $werte[4]<br>"; print "Postleitzahl: $werte[5] <br>"; print "Stadt: $werte[6] <br>"; }

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

Spalte aus Tabelle auslesen

<?php $a="localhost"; $b="Stud"; $c="Sesam"; $d="ex"; mysql_connect($a,$b,$c); mysql_select_db($d); $zeiger = mysql_query("SELECT Name FROM MitarbeiterAdressen"); while($werte = mysql_fetch_array($zeiger)) { print "Name: $werte[0] <br>"; } mysql_close(); ?>

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

Die WHERE-Klausel

Die WHERE-Klausel dient dazu Bedingungen für einen DML- oder SELECT-Befehl zu bestimmen. <?php $a="localhost"; $b="Stud"; $c="Sesam"; $d="ex"; mysql_connect($a,$b,$c); mysql_select_db($d); $zeiger=mysql_query("SELECT Name FROM Adressen8 WHERE Stadt='Karlsruhe'"); while($werte=mysql_fetch_array($zeiger)) { print "Name: $werte[0] <br>"; } mysql_close(); ?>

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

PHP/SQL-Übung

1. Erstellen Sie eine Tabelle zur Speicherung der folgenden Daten in der Datenbank „ex“ mit Phpmyadmin. 1. id (Primärschlüssel) 2. Vorname 3. Nachname 4. Alter (Alter ist ein SQL-Befehl. Zeichenfolge „Alter“ im SQL-Teil vermeiden!) 5. Stadt 6. Nationalität 2. Erstellen Sie ein PHP-Programm das über ein Formular die Personendaten entgegennehmen kann. 3. Erstellen Sie die entsprechenden PHP- und SQL-Anweisungen, damit die Eingabedaten in die unter Punkt 1

angelegte Tabelle, durch einen Klick auf eine Schaltfläche, eingetragen werden. 4. Erstellen Sie ein weiteres PHP-Programm, mit dem Sie die vorhandenen Einträge in Ihrer Tabelle auslesen

und visualisieren können. Das zweite PHP-Programm soll durch einen Link unter dem Eingabeformular gestartet werden können.

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

Dateien hochladen

HTML-Seite:

<form enctype="multipart/form-data" action="upload.php" method="POST"> <input type="hidden" name="MAX_FILE_SIZE" value="30000"> Send this file: <input name="userfile" type="file"> <input type="submit" value="Send File"> </form>

Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. Martin Schober

Dateien hochladen

PHP-Programm upload.php: <?php $uploadDir = '/var/www/web1/html/upload_aufgabe/'; $uploadFile = $uploadDir . $_FILES['userfile']['name']; echo "<pre>"; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadFile)) { echo "Datei ist in Ordnung und Sie wurde erfolgreich hochgeladen."; echo "\n"; print_r($_FILES); } else { echo "Es wurde ein Fehler gemeldet!\nHier sind die Fehler informationen:\n"; print_r($_FILES); } echo "</pre>"; ?>