PHP_MySQL

Werbung
PHP + MySQL
Die MySQL-Datenbank
Hochschule Karlsruhe Technik & Wirtschaft
Internet-Technologien T3B250
SS2014
Prof. Dipl.-Ing. Martin Schober
Zusammenspiel Apache, PHP, PHPMyAdmin und MySQL
PHPMyAdmin
Verwaltungstool
Nutzer
Datei.php
oder Datei.pl
PHP
Scriptsprache
MySQL
Datenbank
Apache
HTTP-Server
Hochschule Karlsruhe Technik & Wirtschaft
Perl
Scriptsprache
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
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.
Primärschlüssel
Primärschlüssel
Id
vorname
Nachname
1
Tobias
Hauser
2
Christian
Wenz
3
Melville
Herman
id
Titel
autor
1
Das Website-Handuch
1
2
Javascript & AJAX
2
3
Moby Dick
3
Tabelle autor
Hochschule Karlsruhe Technik & Wirtschaft
Fremdschlüssel
Tabelle title
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
Die wichtigsten Datentypen
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
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>";
?>
Hochschule Karlsruhe Technik & Wirtschaft
Internet-Technologien T3B250
SS2014
Prof. Dipl.-Ing. Martin Schober
Herunterladen