Datenbankverbindung

Aus php bar

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Herstellung einer Datenbankverbindung

Code

anwendung.php

 // oeffne Verbindung zum Datenbankserver
 $db_verbindung = mysql_connect( 'localhost', 'mysql_user', 'mysql_password' );
 if ( ! $db_verbindung ) {
     die( 'Konnte keine Verbindung herstellen: ' . mysql_error() );
 }
 
 // wähle Datenbank
 $erfolg = mysql_select_db( 'MeineDB', $db_verbindung );
 if ( ! $erfolg ) {
10     die ( 'Kann Datenbank "MeineDB" nicht auswählen : ' . mysql_error() );
11 }
12 
13 $result = mysql_query( 'SELECT ...' );


oder kurz:

1 // öffne Verbindung zum Datenbankserver
2 mysql_connect( 'localhost', 'mysql_user', 'mysql_password' )
3     or die( 'Konnte keine Verbindung herstellen : ' . mysql_error() );
4 
5 // wähle Datenbank
6 mysql_select_db( 'MeineDB' )
7     or die ( 'Kann Datenbank "MeineDB" nicht auswählen : ' . mysql_error() );
8 
9 $ergebnis = mysql_query( 'SELECT ...' );


Trennung von Code und Konfiguration

Zur besseren Konfigurierbarkeit und weil sich der eigentliche Code im Gegensatz zu Verbindungsparametern wohl seltener ändern wird, sollte man eine Trennung zwischen Code und Verbindungsparametern vornehmen. Dies geschieht in dem man die Parameter in Variablen oder Konstanten ablegt.

config.inc.php

 // Verbindungsdaten für die Datenbank
 /** Hostname des Datenbankservers */
 define( 'DB_HOST', 'localhost' );
 
 /** Benutzername mit dem auf die Datenbank zugegriffen wird */
 define( 'DB_USER', 'Benutzer' );
 
 /** Passwort des verwendeten Benutzers */
 define( 'DB_PASS', 'Passwort' );
10 
11 /** Name der zu verwendenden Datenbank */
12 define( 'DB_NAME', 'MeineDB' );


anwendung.php

 require_once 'config.inc.php';
 
 // öffne Verbindung zum Datenbankserver
 mysql_connect( DB_HOST, DB_USER, DB_PASS )
     or die( 'Konnte keine Verbindung herstellen : ' . mysql_error() );
 
 // wähle Datenbank
 mysql_select_db( DB_NAME )
     or die ( 'Kann Datenbank "' . DB_NAME . '" nicht auswählen : ' . mysql_error() );
10 
11 $ergebnis = mysql_query( 'SELECT ...' );


als Include

Damit man nicht überall wo man die Datenbankverbindung benötigt den Code dafür neu schreiben muss erstellt man ihn einmal und legt in einer Datei ab welche man dann an den benötigten Stellen im Programm einbindet (includiert).

config.inc.php

 // Verbindungsdaten für die Datenbank
 /** Hostname des Datenbankservers */
 define( 'DB_HOST', 'localhost' );
 
 /** Benutzername mit dem auf die Datenbank zugegriffen wird */
 define( 'DB_USER', 'Benutzer' );
 
 /** Passwort des verwendeten Benutzers */
 define( 'DB_PASS', 'Passwort' );
10 
11 /** Name der zu verwendenden Datenbank */
12 define( 'DB_NAME', 'MeineDB' );


db.inc.php

1 require_once 'config.inc.php';
2 
3 // öffne Verbindung zum Datenbankserver
4 mysql_connect( DB_HOST, DB_USER, DB_PASS )
5     or die( 'Konnte keine Verbindung herstellen : ' . mysql_error() );
6 
7 // wähle Datenbank
8 mysql_select_db( DB_NAME )
9     or die ( 'Kann Datenbank "' . DB_NAME . '" nicht auswählen : ' . mysql_error() );


anwendung.php

1 require_once 'db.inc.php';
2 
3 $ergebnis = mysql_query( 'SELECT ...' );


als Funktion

Um den Nachteil das bei einem Einbinden des Verbindungscodes bei jedem ausführen der Seite, egal ob die DB-Verbindung benötigt wird oder nicht, zu umgehen kann man das ganz auch in eine Funktion packen, welche dann die Verbindung erst herstellt wenn sie benötigt wird.

db.lib.php

 require_once 'config.inc.php';
 
 /**
  * führt eine Datenbankabfrage durch und gibt das Ergebnis zurück
  * falls noch keine Datenbankverbindung besteht wird diese hergestellt
  * 
  * @uses mysql_connect()
  * @uses mysql_select_db()
  * @uses mysql_error()
10  * @uses mysql_query()
11  * 
12  * @param string SQL-Abfrage
13  * @return result|boolean Ergebnis der Abfrage
14  */
15 function dbAbfrage( $query )
16 {
17     static $db_verbindung = NULL;
18     
19     // wenn noch keine Datenbankverbindung besteht
20     if ( NULL === $db_verbindung )
21     {
22         $db_verbindung = mysql_connect( DB_HOST, DB_USER, DB_PASS )
23             or die( mysql_error() );
24         
25         mysql_select_db( DB_NAME, $db_verbindung )
26             or die( mysql_error() );
27     }
28     
29     $result = mysql_query( $query )
30         or die( mysql_error() );
31         
32     // return result
33     return $result;
34 }


anwendung.php

1 require_once 'db.lib.php';
2 
3 $ergebnis = dbAbfrage( 'SELECT ...' );


als Objekt

anwendung.php

 require_once 'DB.php'; // PEAR::DB Modul laden
 
 $dsn = 'mysql://user:pass@localhost/dbname';
 
 $dbh = DB::connect($dsn);
 if (DB::isError($dbh)) {
     trigger_error('Verbindung zur Datenbank fehlgeschlagen: '.
                   $dbh->getMessage(), E_USER_ERROR);
 }
10 
11 // mit dem $dbh-handler arbeiten...
12 


Trennen der Verbindung

Normalerweise wird eine Trennung der Datenbankverbindung nicht benötigt, da dies automatisch erfolgt mit dem Ende des Scripts. Man kann dies allerdings auch explizit veranlassen.

Code

1 mysql_close( $db_verbindung );


oder kurz:

1 mysql_close();


bei Include

..todo...

bei Funktion

..todo... register_shutdown ...

bei Objekt

..todo... __sleep()

Handbucheinträge

Persönliche Werkzeuge