Datenbankhandler in Klasse übergeben

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

  • Datenbankhandler in Klasse übergeben

    Hi, ich habe grade an einer Homepage geschrieben, als ich merkte das ich auf 2 Datenbanken zugreifen musste. Deshalb hab ich jetzt versucht mit Handlern zu arbeiten. Da ich aber nich nochmal jede query ändern wollte habe ich einfach eine mit Handler laufen und eine ohne.
    PHP-Code:
    //Verbindung zur MySQL Datenbank herstellen
    $forum mysql_connect($config['host'],$config['benutzername'],$config['passwort']) 
    or 
    $fehler[] = "Konnte keine Verbindung zum SQL Server herstellen";
    mysql_select_db("testforum",$forum);
    mysql_connect($config['host'],$config['benutzername'],$config['passwort']) 
    or 
    $fehler[] = "Konnte keine Verbindung zum SQL Server herstellen";
    mysql_select_db($config['datenbankname']) 
    or 
    $fehler[] = "Konnte keine Verbindung zur SQL Datenbank herstellen"
    mit der 2. Datenbank connection klappt alles wunderbar. Weil ohne einen Handler in der query nimmt SQL ja die letzte connection.
    Nun wollte ich in einer Klasse aus $forum Daten auslesen.
    PHP-Code:
    $auth = new Auth($forum); 
    also übergebe ich den Handler:
    in der Klasse steht dann:
    PHP-Code:
    $this->forum $forum;
    $this->query mysql_query("SELECT ...",$this->forum);
    mysql_num_rows($this->query); 
    nur jetzt wird mir ein Fehler ausgegeben und ich glaube das er in $forum nicht rihtig conected

    Fehler:
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\XAMPP\htdocs\Orkteckneu\core\klassen.php on line 45

    Geht das so wie ich das mache mit dem Datenbankhandler oder mach ich dort was falsch?

    Vielen Dank im Vorraus
    Dulla_Po

  • #2
    $this->query = mysql_query("SELECT ...",$this->forum) or die(mysql_error());

    Kommentar


    • #3
      Fehler: Table 'test.bb1_users' doesn't exist

      aha, aber er soll ja zur Datenbank testforum verbinden. Also wurde der Handler $forum nicht ordentlich übergebn.

      Kommentar


      • #4
        Original geschrieben von Dulla_Po
        Fehler: Table 'test.bb1_users' doesn't exist

        aha, aber er soll ja zur Datenbank testforum verbinden. Also wurde der Handler $forum nicht ordentlich übergebn.
        Nein, der Handler wurde schon richtig übergeben, sonst bekommst du andere Fehlermeldung! Lese die Fehlermeldung nochmals durch und unternimm was dagegen!

        Kommentar


        • #5
          Naja, bei den mysql_connect() aus meinem 1. Post hab ich einmal $forum als handler zugeordnet der zur Datenbank testforum connecten soll. In testforum existiert diese Tabelle. Aber dann hab ich noch ein connect ohne einen Handler und den hat er übernommen, da dieses connect zur Datenbak test verbindet. Wenn ich nur für diese auch einen Handler nehmen müsste, müsste ich nochmal alle meine Scripte ändern und deshalb hab ich dem 2. connect keinen Handler zugeordnet. Jetzt verbindet der aber mit dem connect ohne Handler und da existiert diese Tabelle ja nicht.

          Kommentar


          • #6
            Ich fasse deine Worte nochmal zusammen:
            1. In 'testforum' gibt es eine Tabelle 'bb1_users'.
            2. In 'test' gibt es keine Tabelle 'bb1_users'.

            Und nun lies dir die Fehlermeldung nochmal durch:
            "Table 'test.bb1_users' doesn't exist."

            Ziemlich egal, ob mit oder ohne oder welches Handle überhaupt. Wegen 2. kann diese Query nicht funktionieren. Groschen gefallen?
            Zuletzt geändert von onemorenerd; 17.06.2007, 12:48.

            Kommentar


            • #7
              jaja, schon klar.
              Aber warum verbindet der nicht zur testforum DB oder ignoriert einfach das Handle was ich in die query mit übergeben habe?
              $forum soll zur testforum Db connecten, hat aber genau dieselbe Resource id wie der Handler, der auf die test DB zugreifen soll.
              Also greift er nur auf die test DB zu und ich kann nicht die Tabellen aus der testforum DB auslesen.
              Zuletzt geändert von Dulla_Po; 17.06.2007, 13:30.

              Kommentar


              • #8
                problem ist ganz einfach:

                deine Ausgewählte Datenbank mit dem Handler in $forum wird überschrieben, weil gleicher server, gleicher benutzer, gleiches passwort ----> gleiche verbindung...

                die verbindung besteht bereits und wird deshalb nicht erneut aufgebaut... deshalb bezieht sich dein zweites select_db auch gleichzeitig auf die durch $formu gehandelte verbindung...

                greetz, high
                Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
                When everything else fails, manipulate the data...
                Beschriftungen / Großformatdruck / Werbemittel

                Kommentar


                • #9
                  Hmm, ok danke
                  Wie kann ich denn erreichen das eine andere Datenbank mit einbezogen wird?

                  Kommentar


                  • #10
                    am einfachsten einen zweiten benutzer mit gleicher berechtigung für die datenbank anlegen und beide verbindungen mit unterschiedlichen benutzern aufbauen...

                    dann gibts auch zwei eigenständige verbindungen, ergo auch zwei verschiedene handler...

                    greetz, high
                    Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
                    When everything else fails, manipulate the data...
                    Beschriftungen / Großformatdruck / Werbemittel

                    Kommentar


                    • #11
                      hmmm, die datenbank ist leider gehostet und da gibt es nur einen Benutzer. Geht das nicht irgendwie anders, denn ich hab leider keine Berechtigung einen neuen Benutzer zu erstellen

                      Kommentar


                      • #12
                        dann bleibt dir nur die möglichkeit, vor jeder query die datenbank zu wechseln. (mysql_select_db)

                        nicht schön...

                        oder du legst beide installationen in die selbe datenbenk und stellst den tabellen-namen ein prefix voran (zb. forum1_bb2_users und forum2_bb2_users)

                        auch nicht schön *gg*...

                        was ist denn eigentlich der Sinn dieses hin und her?

                        greetz, high
                        Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
                        When everything else fails, manipulate the data...
                        Beschriftungen / Großformatdruck / Werbemittel

                        Kommentar


                        • #13
                          Naja ich habe eine Datenbank für die Organisatorischen Sachen für die Homepage z.B. Newstabelle und User Online Tabelle und in der anderen Datenbank ist das Burning Board installiert. Naja ich muss ja nur an einer Stelle die DB wechseln. Also geht das ja noch.
                          Danke dir!

                          Kommentar


                          • #14
                            nimm mysql_db_query dann brauchst du kein mysql_select_db

                            Kommentar


                            • #15
                              Ah super ok danke

                              Kommentar

                              Lädt...
                              X