PHP/Datenbank anlegen
Wenn eine Verbindung zum MySQL-Datenbankserver hergestellt werden kann, so kann nun eine Datenbank angelegt werden.
Das folgende Skript "open.inc.php" definiert einige Variablen und sorgt für eine Verbindung zur Datenbank. Dafür müssen die Variablen "$server", "$user", "$password" der Name des MySQL-Datenbankservers, der Benutzername (Standard ist "root") und das Passwort eingetragen werden. Das Skript erlaubt die Einstellung von zwei Werten für die erforderlichen Verbindungsparameter. Diese können verwendet werden, um die eigenen Skripte sowohl lokal wie auch auf dem produktiven Server zu testen
<?php
## Name open.inc.php
## Adresse des Liveservers ohne "www", statt "www.mein.server.ch"
## also "mein.server.ch"
$liveserver = "";
if ($_SERVER['SERVER_NAME'] == $liveserver) {
## Werte auf Live-Server einstellen
$user = ""; ## Benutzername fuer die MySQL-Datenbank
$password = ""; ## Kennwort fuer die MySQL-Datenbank
$server = ""; ## Adresse/IP/Name des MySQL-Servers
$database = ""; ## Name der standardmaessig verwendeten Datenbank
} else {
## Werte auf Entwicklungssystem einstellen
$server = "localhost"; ## MySQL-Server
$user = "root"; ## MySQL-Nutzer
$password = ""; ## MySQL-Kennwort
$database = "php5test"; ## Standarddatenbank
}
$connection = @mysql_connect($server, $user, $password);
if($connection)
{
mysql_select_db($database, $connection);
}
else
{
die("<p><b>Keine Verbindung zum MySQL-Server!</b></p>");
}
?>
|
In einem PHP-Skript kann der Datenbankzugriff nun mit der folgenden Zeile aktiviert werden:
<?php include("./open.inc.php"); ?>
|
Das folgende Skript "mysql_create.php" nutzt die Datei "open.php.inc" zum Herstellen einer Verbindung, erzeugt anhand der Daten in der untenstehenden Datei "database.db" eine Testdatenbank namens "php5test" und einige Tabellen. Da die Daten in der Datei "database.db" durch Strichpunkte getrennt sind, können sie einfach mittels "preg_split" aufgeteilt werden. Danach wird sas sich daraus ergebende Array der Befehle durchlaufen und mit "mysql_query" wird jeder Befehl gesendet.
<?php
## Name mysql_create.php
include("open.inc.php");
$rawdata = file_get_contents("database.db");
$sql = preg_split("|;|", $rawdata);
if (is_array($sql))
{
$counter = 0;
foreach ($sql as $command)
{
mysql_query($command, $connection);
$name = substr($command, 0, 78);
echo "Fuehre Befehl $name ($counter) aus<br />";
$counter++;
}
}
mysql_close($connection);
?>
|
Die Datei "database.db" hat dabei folgenden Inhalt:
DROP DATABASE php5test IF EXISTS;
CREATE DATABASE php5test;
USE php5test;
DROP TABLE address IF EXISTS;
CREATE TABLE address (
custID bigint(21) NOT NULL auto_increment,
fname varchar(50) default NULL,
sname varchar(50) default NULL,
company varchar(80) default NULL,
street varchar(80) default NULL,
zip varchar(6) default NULL,
city varchar(40) default NULL,
telephone varchar(40) default NULL,
telefax varchar(40) default NULL,
email varchar(50) default NULL,
PRIMARY KEY (custID)
) TYPE=MyISAM;
INSERT INTO address VALUES
(1, 'Hopstein', 'Alexander', 'Conga Communications', 'Börselgasse', '22765', 'Hamburg', '040/1234356', '040/9876541', 'hopstein@conga.de');
INSERT INTO address VALUES
(2, 'Dannegger', 'Christian', 'Living-Systems', 'Roggenbachstrasse', '78050', 'Villingen', '07721/98910', '07721/989191', 'danneger@living-systems.de');
INSERT INTO address VALUES
(3, 'Schatton', 'Peter', 'Euro Event', 'Tronjestrasse', '44319', 'Dortmund', '0231/212110', '0231/21929', '');
INSERT INTO address VALUES
(4, 'Borgmann', 'Georg', 'Euro Event', 'Tronjestrasse', '44319', 'Dortmund', '0231/212110', '0231/21929', '');
INSERT INTO address VALUES
(5, 'Jakob', 'Georg', 'Compuserve', 'Hauptstrasse', '82008', 'Unterhaching', '089/66571160', '089/66571316', 'jakob@compuserve.com');
INSERT INTO address VALUES
(6, 'Fernau', 'Peter', 'e-com AG', 'Richard-Wagner-Strasse', '70184', 'Stuttgart', '0711/24894812', '0711/24894811', 'fernau@ecomag.de');
INSERT INTO address VALUES
(7, 'Gaub', 'Sissi', 'e-com AG', 'Richard-Wagner-Strasse', '70184', 'Stuttgart', '0711/24894812', '0711/24894811', 'info@ecomag.de');
INSERT INTO address VALUES
(8, 'Kallola', 'Dan', 'e-com AG', 'Richard-Wagner-Strasse', '70184', 'Stuttgart', '0711/24894812', '0711/24894811', 'info@ecomag.de');
INSERT INTO address VALUES
(9, 'Eisenmenger', 'Frank', 'CIB', 'Robert-Rössle-Strasse', '13125', 'Berlin', '030/94892911', '030/94892912', 'cib@mdc-berlin.de');
INSERT INTO address VALUES
(10, 'Meissner', 'Bernd', 'Openshop Holding AG', 'Wilhelmstrasse', '89073', 'Ulm', '0731/1553-100', '0731/1552-111', 'info@openshop.de');
INSERT INTO address VALUES
(11, 'Meene', 'Klaus', 'Living-Systems', 'Roggenbachstrasse', '78050', 'Villingen', '07721/98910', '07721/989191', 'meene@living-systems.de');
INSERT INTO address VALUES
(12, 'Neumeier', 'Frank', 'Ziff Davis Verlag', 'Riesstrasse', '80992', 'München', '089/14312142', '089/14312100', 'neumeier@ziff.de');
INSERT INTO address VALUES
(13, 'Nebel', 'Herbert', '', 'Mommsenstrasse', '10629', 'Berlin', '030/8814244', '', 'nebel@comvalley.com');
|
Die Ausgabe bei Aufruf des Skripts "mysql_create.php" im Webbrowser wird etwa wie folgt aussehen:
Fuehre Befehl DROP DATABASE php5test IF EXISTS (0) aus Fuehre Befehl CREATE DATABASE php5test (1) aus Fuehre Befehl USE php5test (2) aus Fuehre Befehl DROP TABLE address IF EXISTS (3) aus Fuehre Befehl CREATE TABLE address ( custID bigint(21) NOT NULL auto_incremen (4) aus Fuehre Befehl INSERT INTO address VALUES (1, 'Hopstein', 'Alexander', 'Conga Communicati (5) aus Fuehre Befehl INSERT INTO address VALUES (2, 'Dannegger', 'Christian', 'Living-Systems', (6) aus ... Fuehre Befehl (18) aus
Nach Durchführung dieses Vorgangs steht die Datenbank "php5test" zur Verfügung.