Datenbankverbindung beenden? Wie?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datenbankverbindung beenden? Wie?

    Hi,

    ich bin noch recht neu in der MySQL-Szene und habe grundlegende Erfahrungen in PHP. Ich hoffe, dass man mir hier manchmal helfen kann.

    Derzeit versuche ich einen einfachen Datenbankzugriff über ein PHP-Script zu realisieren. Sollte ja eigentlich kein Problem sein und es funktioniert alles soweit. Aber ich möchte die Verbindung zur Datenbank am Ende des Scriptes beenden. Gebe ich den nötigen Quelltext dafür ein und führe es dann Online aus, kommt folgende Meldung:

    Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in /users/nexu/www/datenbankfunktionen.php on line 11
    Mein Quelltext sieht folgendermaßen aus:

    Datei: index.php
    Beschreibung: Greift auf datenbankfunktionen.php zu und listet Nummer und Name der User-Tabelle auf.

    PHP-Code:
    <?php
    include("datenbankfunktionen.php");
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Unbenanntes Dokument</title>


    <?
    DatenbankOeffnen();
    ?>


    </head>
    <body>

    <p>

    <?
    $ergebnis = mysql_query("SELECT * FROM user");

    while($ergebniseinzeln = mysql_fetch_array($ergebnis)){
        echo $ergebniseinzeln["nr"].": ".$ergebniseinzeln["name"]."<br/>";
    }
    ?>

    </p>

    <?php
    mysql_free_result
    ($ergebnis);

    DatenbankBeenden();
    ?>


    </body>
    </html>
    Die 2. Datei: datenbankfunktionen.php
    Beschreibung: Enthält Funktionen, welche Verbindung zur Datenbank aufbauen bzw. beenden.

    PHP-Code:
    <?php
    function DatenbankOeffnen()
    {
        
    $conn mysql_connect("localhost""xxx""xxx");
        
    mysql_select_db("xxx",$conn);
        return 
    $conn;
    }

    function 
    DatenbankBeenden()
    {
    mysql_close($conn);
    }
    ?>
    Woran liegt es, dass diese Meldung erscheint und wie kann ich sie ausmerzen? Vielen Dank für jede Hilfe!

    Hinweis: Ich habe den Quelltext fast 1:1 aus einer Zeitschrift übernommen und bin daher der Meinung alles richtig gemacht zu haben. Doch dann dürfte die Fehlermeldung ja nicht kommen... O_o


    Ich hätte noch eine theoretische Frage
    Was ist der Unterschied zwischen MySQL, PostgreSQL, MS-SQL und wofür nutzt man diese?



    Gruß, NeXu
    Zuletzt geändert von Nexu; 08.05.2008, 01:35.

  • #2
    Die Variabl $conn ist eine lokale Variable, d.h. sie ist nur in der Funktion in der sie Verwendet wird gültig.

    PHP-Code:

    $conn 
    DatenbankOeffnen();;
    //Da du als result der Funktion die Verbindung zurückgibst

    DatenbankBeenden($conn);
    //Verbindung an die Beenden Funktion mit übergeben

    function DatenbankBeenden($conn//Die Funktion benötigt $conn als Parameter
    {
    mysql_close($conn);

    Wofür benutzt du die Funktion Datenbankbeenden? Diese tut doch nix anderes als mysal_close aufzurufen also ist:


    das
    PHP-Code:
    DatenbankBeenden($conn); 
    doch mit dem identisch:
    PHP-Code:
    mysql_close($conn); 
    Das schließen der Verbindung ist aber so gar nicht notwendig:

    Auszug aus SelfPHP zur Funktion mysql_connect:
    Die Verbindung zur Datenbank wird mit dem Skriptende oder der Funktion mysql_close() wieder geschlossen
    Du müsstest die Verbindung im Falle einer persistenten Verbindung nur von Hand schließen. Siehe auch http://www.selfphp.de/funktionsrefer...l_pconnect.php

    PostgreSQL, MSSQL etc. sind einfach nur andere Datenbanksysteme die mit SQL Befehlen arbeiten können. Einfach mal bei google den Namen des Datenbanksystems eintippen für mehr Informationen
    Zuletzt geändert von Caine Luveno; 08.05.2008, 07:30.

    Kommentar


    • #3
      Danke Caine Luveno. Es funktioniert jetzt. Die Meldung ist weg.
      Die 2. Funktion ist unnötig. Du hast recht
      Mit SelfPHP werde ich mich mal genauer befassen.

      Kommentar


      • #4
        Es ginge auch über globals. Ist zwar nicht besonders schön funzt aber auch
        PHP-Code:
        $conn NULL;

        function 
        DatenbankOeffnen()
        {
            
        $GLOBALS['conn'] = $conn mysql_connect("localhost""xxx""xxx");
            
        mysql_select_db("xxx",$conn);
        }

        function 
        DatenbankBeenden()
        {
        mysql_close($GLOBALS['conn']);
        }
        ?> 
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar

        Lädt...
        X