PHP/Datenbank anlegen

Aus Mikiwiki
< PHP
Zur Navigation springen Zur Suche springen

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.