Zugangsdaten zur DB wo ablegen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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

    Comment


    • #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.

      Comment


      • #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

        Comment


        • #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?
          Last edited by Stonebreaker62; 10-09-2007, 18:11.

          Comment


          • #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

            Comment


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

              Comment

              Working...
              X