Ergebnis 1 bis 6 von 6

Thema: Wie löse ich das Problem mit 2 Verbindungen auf eine Datenbank?

  1. #1
    Großmeister(in) Avatar von MyXoToD
    Registriert seit
    07.11.2007
    Ort
    Mainz
    Alter
    24
    Beiträge
    507
    Danke
    0
    Bekam 1 mal "Danke" in 1 Posting

    Standard Wie löse ich das Problem mit 2 Verbindungen auf eine Datenbank?

    Hallo liebes Forum,
    ich programmiere zurzeit eine kleine Webseite mit einem Kumpel zusammen. Ich habe nun die ersten Klassen dafür geschrieben und probiere nun gerade etwas ganz neues aus (also für mich neu). Ich möchte die Session in der Datenbank speichern. Habe dafür folgende Datei:
    PHP-Code:
    function _open() {
        require_once(
    'core/cfg/config.cfg.php');
        global 
    $_sess_db;
        if (
    $_sess_db mysql_connect($config['db_host'], $config['db_username'], $config['db_password'])) {
            return 
    mysql_select_db($config['db_name'], $_sess_db);
        }
        return 
    false;
    }
    function 
    _close() {
        global 
    $_sess_db;
        return 
    mysql_close($_sess_db);
    }

    function 
    _read($id) {
        global 
    $_sess_db;
        
    $sql "SELECT data FROM sessions WHERE id = '{$id}'";
        if (
    $result mysql_query($sql$_sess_db)) {
            if (
    mysql_num_rows($result)) {
            
    $record mysql_fetch_assoc($result);
            return 
    $record['data'];
            }
        }
        return 
    '';
    }

    function 
    _write($id$data) {
        global 
    $_sess_db;
        
    $access time();
        
    $sql "REPLACE INTO sessions VALUES ('{$id}', '{$access}', '{$data}')";
        return 
    mysql_query($sql$_sess_db);
    }

    function 
    _destroy($id) {     
        global 
    $_sess_db;
        
    $sql "DELETE FROM sessions WHERE id = '{$id}'";
        return 
    mysql_query($sql$_sess_db);
    }

    function 
    _clean($max) {
        global 
    $_sess_db;
        
    $old time() - $max;
        
    $sql "DELETE FROM sessions WHERE access < '{$old}'";
        return 
    mysql_query($sql$_sess_db);

    Ich habe eine Hauptklasse (statisch) in der ich alle anderen Klassen lade, wie zum Beispiel die Klasse für die Datenbankverbindung:
    PHP-Code:
        public static function start($startSession true) {
            if (
    $startSession) {
                
    system::loadSession();
                
    session_set_save_handler('_open','_close','_read','_write','_destroy','_clean');
                
    session_start();
            }
            
    system::loadConfig();
            
    system::loadDatabase();
        } 
    Wie ihr nun aber seht, musste ich in der Session-Datei nochmals eine Verbindung aufbauen. Warum auch immer konnte ich die Datenbank-Klasse dort nicht verwenden. Hatte sie anfangs vor dem system::loadSession() eingebunden aber es hat nicht geklappt.
    Naja okay das Problem was ich nun bekomme ist folgende Fehlermeldung:

    Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'www-data'@'localhost' (using password: NO) in /www/htdocs/xxxxxx/xxxxxx.de/core/classes/database.class.php on line 11

    Ich habe in der Doku von mysql_connect gelesen, dass es einen Parameter gibt "new_link" mit dem man eine neue Verbindung mit den selben Parametern erzwingen kann. Hat in meinem Fall leider nichts gebracht. Was anderes nützliches zu dem Thema habe ich auch nicht gefunden... Ich hoffe ihr könnt mir weiterhelfen. Ich nehme auch gerne einen Vorschlag entgegen wie ich es anders machen könnte. Vielleicht geht das ja doch irgendwie, dass ich in der Session-Funktions-Datei die Datenbankklasse nutze.

    Highfive!
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    Don't follow me, I run into walls.

  2. #2
    Bandit
    Gast

    Standard AW: Wie löse ich das Problem mit 2 Verbindungen auf eine Datenbank?

    Mein Tipp: mal in der Doku nachsehen, was require_once macht.

    Wäre wohl auch zu finden gewesen mit

    Richtig debuggen


    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL);
    3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysql_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
    6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

  3. #3
    Großmeister(in)
    Themenstarter
    Avatar von MyXoToD
    Registriert seit
    07.11.2007
    Ort
    Mainz
    Alter
    24
    Beiträge
    507
    Danke
    0
    Bekam 1 mal "Danke" in 1 Posting

    Standard AW: Wie löse ich das Problem mit 2 Verbindungen auf eine Datenbank?

    Wieso sollte es denn durch require_once dieses Problem geben? Soweit ich weiß bindet require_once die Datei doch genauso ein wie require. Nur halt mit der Ausnahme, dass PHP prüft ob die Datei vorher schonmal eingebunden wurde und wenn ja sie dann nicht einbindet.
    Don't follow me, I run into walls.

  4. #4
    Bandit
    Gast

    Standard AW: Wie löse ich das Problem mit 2 Verbindungen auf eine Datenbank?

    Boah, das war kein Wink mit dem Zaunpfahl, ich habe mit dem ganzen Zaun zugeschlagen. Und du hast nix davon kapiert!!!
    PHP-Code:
    <?php
        
    // config.php
       
    $var "Hallo Welt";
    ?>
    PHP-Code:
    <?php
       
    // Testscript
       
    function checkCfg()
       {
          require_once(
    "./config.php");
          
          if (isset(
    $var))
            echo 
    "jau";
          else
            echo 
    "Shit";
       }
       
       require_once(
    "./config.php");
       
       echo 
    $var "<br>";
       
       
    checkCfg();
       
    ?>
    Und nochwas: globale Variablen sind bäh und sorgen in der Regel nur für Probleme!
    Geändert von Bandit (01.06.2012 um 11:52 Uhr)

  5. #5
    Großmeister(in)
    Themenstarter
    Avatar von MyXoToD
    Registriert seit
    07.11.2007
    Ort
    Mainz
    Alter
    24
    Beiträge
    507
    Danke
    0
    Bekam 1 mal "Danke" in 1 Posting

    Standard AW: Wie löse ich das Problem mit 2 Verbindungen auf eine Datenbank?

    Vielen Dank für das Beispiel. Du musst leider damit rechnen, dass in einem Hilfeforum Leute nach Hilfe fragen. Du musst nicht jeden direkt so ankacken, nur weil er mal nicht so viel weiß wie du. Man wird immer wieder hier angekackt weil man etwas nicht versteht oder sonst was, das ist echt nicht der richtige Umgang mit Leuten die es lernen wollen bzw die Probleme haben. Wenn man eigentlich gar nicht helfen will, ist das hier vielleicht der falsche Ort für einen. Trotzdem danke. Ich versuche es nun alleine weiter...
    Das mit den globalen Variablen mache ich auch nur ungern. Wollte es ja vorher so versuchen, aber das hat nicht geklappt:
    PHP-Code:
    <?php
    function _open() {
        
    }
    function 
    _close() {

    }

    function 
    _read($id) {
        
    $result system::$db->query("SELECT data FROM sessions WHERE id = '{$id}'");
        if (
    system::$db->getTableRows($result) > 0) {
            
    $record system::$db->fetch($result);
            return 
    $record['data'];
        }
        return 
    '';
    }

    function 
    _write($id$data) {
        
    $access time();
        return 
    system::$db->query("REPLACE INTO sessions VALUES ('{$id}', '{$access}', '{$data}')");
    }

    function 
    _destroy($id) {    
        return 
    system::$db->query("DELETE FROM sessions WHERE id = '{$id}'");
    }

    function 
    _clean($max) {
        
    $old time() - $max;
        return 
    system::$db->query("DELETE FROM sessions WHERE access < '{$old}'");
    }
    ?>
    Bei diesem Versuch bekomme ich folgende Fehlermeldung:

    Warning: mysql_query(): 5 is not a valid MySQL-Link resource in /www/htdocs/xxxxxx/xxxxxx/core/classes/database.class.php on line 40

    In Zeile 40 der Datenbank Klasse wird der Query ausgeführt (mysql_query()).
    Geändert von MyXoToD (01.06.2012 um 12:45 Uhr)
    Don't follow me, I run into walls.

  6. #6
    Bandit
    Gast

    Standard AW: Wie löse ich das Problem mit 2 Verbindungen auf eine Datenbank?

    Ähm, ich habe dir geschrieben, woran es liegt, und du selber schreibst noch
    Nur halt mit der Ausnahme, dass PHP prüft ob die Datei vorher schonmal eingebunden wurde und wenn ja sie dann nicht einbindet.
    Du gibst dir selber die Begründung, warum das nicht funktioniert und zweifelst an, dass es daran liegen könnte?!?!? Hallo? Muss man nicht verstehen, oder? Und wenn du "Richtig debuggen" angewendet hättest, hättest du selber herausfinden können, dass dir da einige Variablen fehlen!

Ähnliche Themen

  1. Mehrere Datenbank Verbindungen
    Von Ecstasy im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 08.10.2009, 23:06
  2. Wie belastbar ist eine datenbank?
    Von im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 7
    Letzter Beitrag: 14.06.2007, 14:42
  3. Mit php eine acces datenbank auslesen
    Von cookie im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 16
    Letzter Beitrag: 09.02.2006, 17:11
  4. Formulardaten in eine Datenbank übergeben
    Von Andi im Forum HTML & CSS Forum
    Antworten: 9
    Letzter Beitrag: 06.02.2006, 13:07
  5. Wie binde ich ein Datenbank an eine Homepage an?
    Von Fasan im Forum HTML & CSS Forum
    Antworten: 1
    Letzter Beitrag: 08.04.2004, 15:31

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •