| Die Kombination MySQL & PHP ist das populärste System, um einen bequemen Datenbank-Zugriff herzustellen: Es funktioniert mit jedem Standard-Browser auf jedem Betriebssystem, und es benötigt für den privaten Gebrauch keine Lizenzgebühren. | Hier finden sie einige Informationen über die spezielle Kombination von MySQL (Datenbank) und PHP (Programmiersprache). Details über PHP und MySQL erfahren sie in anderen Kapiteln. |
PHP
|
PHP Hypertext Processor (Datenbank-Zugriff) |
| LAMP & WAMP | Komponenten ? - zukunftssicher ? - austauschbar ? |
| PHP-Module | Modul mysql oder mysqli je nach Server-Version ! |
| Status | Live-Status des verwendeten SQL-Datenbank-Servers |
| Start | Verbindung mit dem MySQL-Server, SQL-Befehle erteilen |
| SQL oder PHP ? | Alternative Lösungen |
| Struktur | Tabellen, Felder, Einstellungen ... Attribute, ... |
| Auto-Format | Ergebnis-Tabellen nach Bedarf automatisch mit PHP formatieren |
| SQL-Batch | Zusammenfassung von SQL-Befehlen zu "Batch"-Programmen |
| Stammblatt | Das Standard-Layout 'Stammblatt' (Karteikarte) |
| Liste | Das Standard-Layout von Listen |
| Blob | Speichern von Binärdaten (Bildern) |
| ODBC | Verwendung der unabhängigen DB-Schnittstelle ODBC |
| SQL-Profi | Interaktive Demo für den Datenbank-Zugriff |
| PS-Trainer | Ältere Webseiten zum gleichen Thema, noch nicht portiert & aktualisiert. |
| User-DB | Statistik der BesucherInnen dieses Webs |
| Links |
|
Allgemeines zum Thema "MySQL & PHP"
Welche Komponenten werden benötigt ? - sind sie zukunftssicher ? -
sind sie austauschbar ?
|
|
LAMP & WAMP |
■
→
LAMP (Linux + Apache + MySQL + PHP) ist das klassische Standard-System (auch)
für die Datenbank-Nutzung mit PHP. → WAMP - Die Windows-Variante kann man u.a. als Test-Umgebung für ein professionelles LAMP-System verwenden. |
Netzwerk |
■
Die Verwendung von PHP & MySQL stützt sich in der Regel auf ein Netzwerk mit
→
TCP/IP-Technologie. Diese Funktionalität ist heute auf allen Standard-PC
verfügbar. Auch die Nachfolge-Version IPv6 wird bereits von allen Komponenten
unterstützt. ■ Eine LAMP-Lösung ist nach Installation in einem lokalen Netzwerk (LAN) frei verfügbar. Die Einschränkung von Zugriffsrechten erfolgt durch Standardmethoden der Netzwerk-Technik und zusätzlich an den einzelnen Komponenten. Eine weitere Einschränkung ist durch Programmierung möglich. ■ Falls gewünscht, sind derartige Datenbank-Lösungen ganz oder teilweise auch im Internet verfügbar, weltweit sowie 'rund um die Uhr' (7/24). In diesem Fall werden die Rechte eingeschränkt. Es ist möglich, die Zugriffsrechte nicht nur an User und Gruppen, sondern auch an den Standort (→ IP-Adresse) zu binden: Die gleichen User erhalten dann unterschiedliche Rechte, je nachdem, von wo aus sie sich mit der Datenbank verbinden. |
Browser |
Ein Browser-Programm ist ein fast ideales Werkzeug für den Zugriff auf
Datenbanken: ■ Auf jedem PC in ausgezeichneter Qualität vorhanden, darüber hinaus kostengünstig oder kostenfrei. ■ Es gibt laufend neue Versionen mit noch besserer Funktionalität. ■ Für jedes Betriebssystem werden Browser angeboten. Daher funktioniert der Zugriff auf Datenbanken mit jedem PC, unabhängig von Betriebssystem und Version. ■ Diese Lösung ist absehbar zukunftssicher, denn für den Datenbank-Zugriff werden auf Seite des Browsers nur die überall enthaltenen Standardfunktionen benötigt. ■ Auf Client-Seite fällt keinerlei (!) Arbeitszeit für Installation, Update oder laufende Betreuung an: Selbst die Erweiterung auf neue BenutzerInnen erfordert keinen Aufwand - Anstecken des PC genügt. ■ Die Entwicklungs-Arbeit verlagert sich von zahlreichen Clients zu einem einzigen Server: Jede Änderung wird einmalig an zentraler Stelle ausgeführt, und bewirkt sofort (!) die veränderte Funktionalität bei allen (!) Clients. ■ Die Verwendung spezieller Client-Programme (z.B. Access) für den Zugriff auf Datenbanken ist weltweit stark im Rückgang: Sie verursachen hohen Aufwand für Ankauf, Installation, Wartung und Betreuung und bieten gegenüber Webseiten keine sinnvolle zusätzliche Funktionalität. Solche Lösungen sind zudem nicht portabel, daher ist jede Investition in die Programmierung aufwändiger Details eine teure Sackgasse. ■ Eine Ausnahme sind einfache "flache" Daten-Tabellen: Ein kleines privates Telefonverzeichnis ohne besondere Bedienungs-Oberfläche lässt sich mit einem Datenbank-Client-Programm (z.B. Access, FileMaker, ...) rascher & einfacher erstellen als eine komplette professionelle DB-Lösung.
|
Webserver |
■
Ein Webserver wird als "Ansprechpartner" für die eingesetzten
Browser benötigt: Der Server verwaltet die Webseiten bzw. erzeugt sie erst auf Anfrage mit Hilfe von Datenbank und PHP. ■ Eine große Anzahl von Webserver-Software ist verfügbar. → Apache ist derzeit das führende Produkt: OpenSource, auf Linux und Windows verfügbar, rasch und sicher. ■ Heutige PC verfügen über ausreichende Resourcen: Ohne Leistungs-Einbuße kann ein eigenes lokales *AMP-System installiert werden. Damit sind mit einfachen Mitteln (PHP oder Perl)-Programme für alle nur denkbaren Zwecke möglich. Statt eines aufwändig programmierten User-Interface werden Webseiten verwendet. |
PHP |
■
Die Programmiersprache PHP ist OpenSource, d.h. weltweit kosten- und lizenzfrei
verfügbar. ■ PHP-Programme (Scripts) werden nicht von menschlichen AnwenderInnen sondern von Webservern eingesetzt. Sie werden dazu verwendet, um Live "dynamische" Teile von Webseiten zu erzeugen, z.B. die Ergebnisse von Datenbank-Abfragen. ■ Der Datenbank-Zugriff erfolgt mit PHP-Standardfunktionen, benötigt daher ebenfalls keine Produkte einzelner Hersteller. Daher ist auch die Verwendung von PHP absehbar zukunftssicher. ■ Der Datenbank-Zugriff kann auch mit anderen Programmiersprachen realisiert werden, z.B. mit → Perl. Der Umstieg ist zwar mit Aufwand verbunden, man kann sich dabei jedoch auf Migrations-Werkzeuge stützen, die üblicherweise schon bald nach der Einführung neuer Programmiersprachen zur Verfügung stehen. Funktionen für den Zugriff auf gängige SQL-Server stehen in allen modernen Programmiersprachen zur Verfügung. |
MySQL |
■
Dieses Produkt ist nicht OpenSource, steht jedoch für den privaten Gebrauch
kostenfrei zur Verfügung. ■ MySQL ist im Sektor kleiner und mittlerer Datenbanken das weltweit führende Produkt, stützt sich auf eine sehr große Zahl erfolgreicher Anwendungen und wird laufend weiter entwickelt. ■ MySQL-Server sind anerkannt schnell und sicher. ■ Das Produkt ist für die meisten gängigen Betriebssysteme erhältlich, u.a. für Linux und Windows. ■ Falls sich die MySQL-Situation in Zukunft ändern sollte, kann eine Datenbank-Lösung mit sehr wenig Aufwand auch an andere SQL-Server angepasst werden: PHP unterstützt alle populären SQL-Server mit Standard-Funktionen, gegen die sich die MySQL-Funktionen leicht austauschen lassen. ■ Wenn bei der Programmierung Standard-SQL verwendet wird, dann kann MySQL mit sehr wenig Aufwand jederzeit durch einen anderen SQL-Server ersetzt werden. Allerdings müssen die PHP-Teile aller beteiligten Dateien geringfügig geändert werden. ■ Bei Verwendung von → ODBC oder JDBC als Datenbank-Schnittstelle ist die Lösung zwar langsamer, jedoch vom verwendeten Datenbank-Server vollkommen (!) unabhängig. Man kann den SQL-Server in diesem Falle ohne Entwicklungs-Aufwand austauschen. |
PHP-Module für MySQL |
|
|
PHP ist wie jede andere moderne Programmiersprache modular aufgebaut.
Nur die tatsächlich benötigten
→
Module werden geladen. Für die Zusammenarbeit mit einem MySQL Datenbank Server bietet PHP 2 verschiedene Module mysql und mysqli (das i steht für 'improved'). ● Beide Module können gleichzeitig installiert werden. Mit jeder Datenbank sollte jedoch immer nur ein Modul verwendet werden. |
●
Das neue verbesserte Modul
mysqli
ist 'Stand der Technik' und wird von allen modernen Datanbank-Lösungen
verwendet. Es funktioniert mit jedem Server seit MySQL-Version 4.1. Für
eigene Entwicklungen wird selbstverständlich nur dieses Modul verwendet. ● Das veraltete Modul mysql braucht man nur mehr für ältere PHP Programme oder sehr betagte MySQL Server. Seine Verwendung signalisiert eine auslaufende Technologie. ♣ Tipp: Sorgen sie für die baldige Umstellung aller verwendeten Datenbank-Programme auf das aktuelle Modul mysqli |
MySQL● Alte MySQL Server (Version <4.1) verwenden eine User-Verwaltung mit einfacher, heute überholter Verschlüsselung. Für die Arbeit mit derartigen Servern verwendet man das alte PHP-Modul mysql● Neue MySQL Server >=4.1 verwenden zur User-Verwaltung eine wesentlich verbesserte Verschlüsselung. Sie können mit beiden PHP-Modulen zusammenarbeiten, am besten jedoch nur mit dem neuen PHP-Modul mysqli |
● Wenn ein neuer MySQL Server mit dem alten PHP-Modul mysql arbeiten soll, dann müssen die MySQL User für das alte und für das neue PHP-Modul getrennt angelegt werden. In diesem Fall muss man für jeden MySQL-User 2 verschiedene User-Namen eintragen, je einmal mit kurz und mit lang verschlüsseltem Passwort. |
Programmierung:► Provider:PHP Script-Programme müssen am Webserver des Web-Provders laufen und richten sich daher nach der dort installierten Version. Am eigenen Entwicklungs-Server wird nach Möglichkeit genau die gleiche Version installiert. ► Wenn der Provider noch immer alte Versionen verwendet, dann sollte man vorausschauend zusätzlich die neuen Versionen in eigene Scripts integrieren: Früher oder später wird der Provider auf neue Versionen umsteigen. In diesem Fall sollten ihre Script-Programme sofort und ohne weiteren Aufwand laufen. ► Die Syntax der beiden PHP-Module ist teilweise unterschiedlich. (Nur) Das neue Modul kann Objekt-orientiert verwendet werden. |
► Eigenes LAMP- oder WAMP-System: Auf dem eigenen Server bestimmt man selbst den Zeitpunkt der Umstellung. ► Entwicklungs-Systeme sollten schon lange auf das neue PHP-Modul mysqli umgestellt sein. Auf einem 'neuen' MySQL-Server kann man PHP-Sripts des alten Moduls mysql und des neuen Moduls mysqli entwickeln und testen. ► Produktions-Systeme werden planmäßig umgestellt: Kleine Lösungen brauchen je nach Qualität der Programme Tage...Wochen, große Wochen...Monate. Bei dieser Gelegenheit werden meist auch andere Programm-Teile erneuert. Es ist z.B. höchste Zeit, die Programme auf PHP Version 6 vorzubereiten, und auslaufende (deprecated, meist unsichere und/oder unsaubere) Teile zu sanieren. ♦ Details zu allen geladenen PHP-Modulen sowie alle Funktionen der Module mysql und mysqli |
|
So kann man feststellen, ob die Module mysql
bzw. mysqli einer PHP-Version geladen sind: Live-
Modul 'mysql' ist geladen.
Modul 'mysqli' ist geladen. |
$myalt=0; $myneu=0;
if(extension_loaded('mysql')) {
$myalt++;
}print "Modul 'mysql' ist geladen"; if(extension_loaded('mysqli')) {
$myneu++;
}
print "Modul 'mysqli' ist geladen"; |
|
So können sie vorab entscheiden, welches Modul verwendet werden soll: Wenn mysqli installiert ist, dann wird die neue Version versucht. Bei Erfolg der Anmeldung (Variable $dbs) wird mysqli verwendet. Wenn nur mysql installiert ist, oder die Anmeldung mit mysqli erfolglos war, dann wird versucht, mysql zu verwenden. Danach werden die Variablen mit den vertraulichen Daten sicherheitshalber gelöscht. Einige Zeit nach erfolgter Umstellung auf mysqli können sie dann die Code-Teile mit den alten Funktionen löschen. |
// Vorgaben:
$host = '192.168.0.1';$user = 'name'; $pswd = 'geheim'; $dbname = 'test'; // Modul mysqli (erste Wahl) ?
if($myneu){
$dbs = new mysqli($host,$user,$pswd,$dbname);
}
if (!$dbs) {$myneu=0;} // Modul mysql ?
if(!$myneu) {
$dbs = @mysql_connect($host,$user,$pswd);
}if (!$dbs) {$myalt=0;} unset($host,$user,$pswd); |
|
So können Scripts aussehen, die sowohl mit dem alten Modul mysql
als auch mit dem neuen Modul mysqli laufen. In diesem Fall sind sie für eine Server-Umstellung gut gerüstet: Sie müssen keine Scripts ändern. Alternative: Der Versuch, bei Server-Umstellung unter Zeitdruck und Stress alle Scripts zu finden und richtig zu ändern, ist gefährlich. |
if($myneu) {
// mysqli-Funktion verwenden
}else { // mysql-Funktion verwenden
}
|
Modul-Installation |
|
|
►
Testen sie vor Installation (z.B. so wie oben gezeigt), ob ein gewünschtes
Modul bereits installiert ist. ► Auf Linux installieren sie PHP-Module so wie jede andere Software mit einem Klick im Standard-Installations-Programm (auf SuSE: YAST | Software). ► Auf Windows müssen sie PHP manuell installieren. Besorgen sie sich aus dem Internet die neueste stabile PHP-Version: Für den Apache-Webserver wählt man die Version VC6, für den MS-IIS Webserver die Version VC9. ► Laden sie auch die PECL Modul-Sammlung, wenn sie verfpgbar ist.. |
►
Packen sie die Archive aus und stellen sie fest, ob die gewünschten
Module enthalten sind. ► Lesen sie die Anweisungen auf der PHP-Webseite und von den Text-Dateien in den Installations-Paketen. ► Schalten sie den Webserver- (Apache)-Dienst ab, falls er läuft. ► Installieren sie PHP, so wie angegeben. ♦ Details zur Windows-Installation auf der Seite LAMP-PHP dieses Webs. |
Windows:► Die gewünschten Module php_mysql.dll und php_mysqli.dll sollten sich im PHP-Verzeichnis befinden. - Das ist dort, wo sich das PHP-Interpreter-Programm (php.exe, php-win.exe, php-cgi.exe) befindet.Falls nicht: Suchen sie diese Dateien (z.B. im Unter-Verzeichnis ext) und kopieren sie die Dateien in das PHP-Verzeichnis. Alternative: Ändern sie die Pfade in der Konfigurationsdatei (s.u.) so, dass PHP die gewünschten Module findet. ► Die → PHP-Konfigurationsdatei php.ini befindet sich im Systemverzeichnis, z.B. C:\Windows\php.ini
Erzeugen sie eine Sicherungskopie der Datei, z.B.
C:\Windows\php.bak Falls nicht - kopieren sie aus der PHP-Installation die Datei php.ini-dist in das Systemverzeichnis, ändern sie den Namen der Kopie in php.ini und erzeugen sie davon sofort eine Sicherungsdatei php_ini.bak |
► Öffnen sie die Konfigurations-Datei mit einem beliebigen Text-Editor und suchen sie den Abschnitt, in welchem zahlreiche Zeilen enthalten sind, die mit extension= beginnen. Ihre Datei sollte diese beiden Zeilen (ohne führendes Kommentar-Zeichen) enthalten:
extension=php_mysql.dll
extension=php_mysqli.dll Entfernen sie allenfalls das Kommentarzeichen oder fügen sie die entsprechende Zeile ein. ► Sichern sie die geänderte Konfigurationsdatei. ► Starten sie den Webserver. Testen sie, ob die gewünschten Module verfügbar sind. |
MySQL-Status |
|
|
Das
→ PHP-Modul mysqli bietet u.a. die rechts
vorgestellten Methoden an. Die Variable dbi bezeichnet jenes DB-Objekt, welches beim Login (connect) mit new mysqli zurückgegeben wurde. Das bedeutet: Nur angemeldete User erhalten diese Information. ♦ Details zum Thema 'MySQL-Start'. |
<?php
print $dbi->server_info();
print $dbi->server_version(); ?>
|
|
Das
→ PHP-Modul mysql bietet u.a. die rechts
vorgestellten Funktionen an. Sie erfordern zwar keine Anmeldung, liefern jedoch nur nach Anmeldung (connect) sinnvolle Werte. |
<?php
print mysql_get_server_info();
print mysql_get_host_info(); print mysql_get_client_info(); ?>
|
Das Live-Ergebnis mit dem SQL-Server von PS-Trainer:
|
$dbi->server_info = 5.1.61-0+squeeze1
$dbi->host_info = Localhost via UNIX socket |
|
|
| PHPcenter (de) - Handbuch mit Beispielen | SelfPHP (de) - Handbuch mit Beispielen + Download |
| Nächstes Kapitel | |
Start: Verbindung mit dem Datenbank-Server
|
|
|
Letzte Änderung dieser Seite: 2011-12-01 09:16:34
|