Ankündigung

Einklappen
Keine Ankündigung bisher.

PostgreSQL : Attribut-Eigenschaften einer lesen

Einklappen

Neue Werbung 2019

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

  • PostgreSQL : Attribut-Eigenschaften einer lesen

    Welche Möglichkeiten, per SQL-Abfrage gibt es , Attributeigenschaften und andere Informationen aus der Datenbank zu erhalten?
    z.B. um Validierungsinformation für Eingaben auf der PHP-Seite zu bündeln.

  • #2
    Was sollen "Attributeigenschaften" sein? Dein Beispiel macht hier auch nichts klar.

    Kommentar


    • #3
      Du kannst bei mysql auf die Tabelle information_schema zugreifen.

      Das ergibt aber keinen Sinn, denn die Informationen der Spalten sind andere als die, die du zum Validieren von Eingaben benötigst.
      Ein Feld varchar(255) sagt ja nichts darübe aus was dort abgelegt werden darf, denn eine E-Mail-Adresse unterliegt ja anderen Validierungskriterien als eine URL oder ein Strassenname.

      Für die Datenbank sind das allles Zeichen und die dürfen 255 Bytes lang sein.

      Im Grunde ist da die Datenbank viel zu unflexibel, da es für die Datenhaltung nicht relevant ist, welche Zeichen dort drin stehen. Der Aufbau einer Datenbank geht mit der Nutzung der Daten einher nicht anders herum.

      Kommentar


      • #4
        Sowas gibts schon fertig:

        https://symfony.com/doc/current/refe...nstraints.html

        Kommentar


        • #5
          Zitat von LudwigBr Beitrag anzeigen
          Was sollen "Attributeigenschaften" sein? Dein Beispiel macht hier auch nichts klar.
          Attribut ist der Fachbegriff für Spaltennamen einer SQL-Tabelle. Dessen Eigenschaften zu ermitteln war mein Ziel.

          https://upload.wikimedia.org/wikiped...banken.svg.png

          Zitat von protestix Beitrag anzeigen
          Du kannst bei mysql auf die Tabelle information_schema zugreifen.

          Das ergibt aber keinen Sinn, denn die Informationen der Spalten sind andere als die, die du zum Validieren von Eingaben benötigst.
          Ich benötige nur die maximale Zeichenlänge. Eine allgemeine Beurteilung und Einschätzung meiner Arbeit nehme ich selber vor, ohne externe Hilfe.




          Kommentar


          • #6
            Hehe. Seine Arbeit selbst einzuschätzen ist natürlich viel sinnvoller als jemand objektives ein Urteil abgeben zu lassen.


            [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
            [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

            Kommentar


            • #7
              In postgres gibt es keine maximale Zeichenlänge in varchar,, auch wenn man die angeben kann, das ist ja das Schöne, du kannst es einfach weglassen und egal wie lang immer reinschmeissen ohne das es Einbussen auf die Geschwindigkeit hätte.
              Hilft dir das jetzt weiter?

              Eine allgemeine Beurteilung und Einschätzung meiner Arbeit nehme ich selber vor, ohne externe Hilfe.
              Dann mach mal.

              Kommentar


              • #8
                Ich werfe hier einfach mal ein Auszug mit den Teil für pgSQL aus einer Methode hin, womöglich hilft das etwas:
                PHP-Code:
                /*
                * Liefert ein mehrdim. Array mit Spalteninformationen und Feldnamen als Schlüssel
                *
                */
                public function getColums($tableName) {
                  
                $driver strtolower($this->getAttr('DRIVER_NAME'));
                  
                $colums = array();
                  if(
                $driver == 'mysql') { //..
                   // :
                  
                } elseif($driver == 'pgsql') {
                      
                $sql "SELECT 
                          column_name, data_type, character_maximum_length
                        FROM information_schema.columns
                        WHERE 
                          table_name = '
                $tableName'";

                      
                $colStruc $this->queryAll($sql);
                      if(empty(
                $colStruc)) return false;

                      
                $colums = array();
                      foreach(
                $colStruc as $no => $struc){
                        
                $columnName $struc['column_name'];
                        
                $colums[$columnName]['columnName'] = $columnName;
                        
                $colums[$columnName]['data_type'] = $struc['data_type'];
                        
                $colums[$columnName]['character_maximum_length'] = $struc['character_maximum_length'];
                      }
                    }

                    return 
                $colums;
                  } 

                Kommentar


                • #9
                  Danke
                  @hellbringer
                  @jspit


                  Das hab ich gerade gesucht!
                  bitcoin.de <- Meine Freelancerwährung

                  Kommentar


                  • #10
                    Cool. Danke!

                    Kommentar

                    Lädt...
                    X