Zugangsdaten zur DB wo ablegen

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

  • Zugangsdaten zur DB wo ablegen

    Hallo,

    gibt es eine allgemeine Empfehlung wo man die Zugangsdaten (Passwort, DB-Name etc.) zur DB ablegen sollte, die man ja in fast jeder Methode benötigt?

    Bisher habe ich das in einem include gemacht, den ich in jede Methode reincodiert habe.

    Spricht etwas dagegen, die Zugangsdaten in GLOBALS-Variablen abzulegen, womit man ja in jeder Methode ohne include rankäme?

  • #2
    Wieso brauchst du die Zugangsdaten in jeder Methode?
    Ist in jeder Methode ein mysql_connect drin oder wie?

    Da bietet sich eine Klasse mit Singleton-Pattern eher an.
    Oder auch einfach nur eine Funktion mit einer statischen Variablen, die connected, wenn diese auf Null steht, und ansonsten einfach nur den alten Handle zurück liefert.

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Ich habe das bisher so gemacht, dass ich in jeder Methode, in der ich DB-Daten lesen/manipulieren will, am Anfang einen Funktionsblock include, der die DB-Zugangsdaten enthält und gleich eine persistente Verbindung aufbaut, deren handle ich dann mehrfach benutzen kann, ohne neu verbinden zu müssen.

      Entnehme Deiner Antwort, das das wohl nicht die cleverste Art ist, an die DB ranzukommen.

      Kommentar


      • #4
        Original geschrieben von Stonebreaker62
        Ich habe das bisher so gemacht, dass ich in jeder Methode, in der ich DB-Daten lesen/manipulieren will, am Anfang einen Funktionsblock include, der die DB-Zugangsdaten enthält und gleich eine persistente Verbindung aufbaut, deren handle ich dann mehrfach benutzen kann, ohne neu verbinden zu müssen.

        Entnehme Deiner Antwort, das das wohl nicht die cleverste Art ist, an die DB ranzukommen.
        ähm... weißt du überhaupt, was genau eine persistente Verbindung ist?
        Nicht das, was du willst denke ich und in den meisten Fällen auch sehr kontraproduktiv~

        Hast du PHP4? Dann benutz meinen Vorschlag mit der Funktion.
        Hast du PHP5? Dann benutz eine Klasse mit Singleton-Pattern.

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Habe nun nach einigen Recherchen folgende Klasse definiert:

          PHP-Code:
          class staticpdo {
          private static 
          $db;
          private function 
          __construct() {
              }
          private function 
          __destruct() {
              }
          private function 
          __clone() {
              }
          public static function 
          singleton($databaseType$databaseHost$databasePort$databaseName

          $databaseUsername$databasePassword) {
             if (!
          is_object(self :: $db)) {
                 try {
                      
          self :: $db = new PDO($databaseType ':host=' .  
                      
          $databaseHost ';dbname=' $databaseName
                      
          $databaseUsername$databasePassword);
                 } catch (
          PDOException $e) {
                      throw new 
          Exception('... ' $e->getMessage());
                 }
             }
              return 
          self :: $db;
              }

          In den einzelnen Methoden greife ich dann wie folgt auf die DB-Verbindung zu:

          PHP-Code:
          require ("dbparam.php"); //hier stehen die Zugangsdaten drin
          $dbh staticpdo :: singleton($dbtyp$dbhost$dbport$dbname$dbuser$dbpass);
          $dbh->exec("SET CHARACTER SET 'utf8' ");
          $dbh->exec("SET NAMES 'utf8' "); 
          Das funktioniert so. Ist das so richtig verstanden oder gibt es noch Optimierungsvorschläge?
          Zuletzt geändert von Stonebreaker62; 10.09.2007, 19:11.

          Kommentar


          • #6
            Die beiden UTF8-Queries kannst du auch mit in die Klasse schreiben ... sparst du dir Tipparbeit~

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              Ich würde das initialisieren und holen der Instanz in zwei Methoden trennen! So musst du nicht immer die Datenbankparameter mit übergeben!

              Kommentar

              Lädt...
              X