Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] SQL- Eigenschaften auslesen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] SQL- Eigenschaften auslesen

    Hallo alle zusammen,
    ich habe ein Problem mit meinem Datenbankzugriff. Es geht um ein Script, welches die Eigenschaften der Spalten einer SQL tabelle auslesen soll. Hierzu nutze ich MYSQLi objektorientiert. Das Problem ist, dass ich einfch keine Daten bekomme. Das Anmelden in der Datenbank funktioniert.

    PHP-Code:

    $query
    ='SELECT * FROM INFORMATION_SCHEMA.COLUMNS 
                WHERE `TABLE_SCHEMA`= '
    .$sql_db.' AND `TABLE_NAME` = '.$table;
            
    $mysqli= new mysqli
                
    (
                    
    $sql_host
                    
    $sql_user
                    
    $sql_pw,
                    
    'INFORMATION_SCHEMA'
                
    )or die('konnte keine Verbindung herstellen');
            
    $result $mysqli -> query($query)
                or die(
    'Query fehlgeschlagen!');
            
            
    $ergebnis $result->fetch_all(MYSQLI_ASSOC); 
    Nach den ersten Versuchen hatte ich beim Anmelden die Datenbank auf INFORMATION_SCHEMA umgestellt, wie man oben sieht. Ich kriege die Fehlermeldung immer bei der Query also "Query fehlgeschlagen!". Der Tabellenname kommt dynamisch über das Webinterface hinzu. Das ist das erste Projekt bei dem ich mysqli objektorientiert nutze, mache das also nur als Hobby. Vielleicht findet ihr ja den Fehler. Der user hat eigentlich alle Rechte, ist der Root benutzer. Hat eigentlich generell jeder Benutzer den direkten Zugriff auf diese Datenbank? Eventuell habt ihr ja noch einen anderen Weg für mich. Es geht mir speziell um Sachen wie, ob es unique ist und welchen Datentyp es beinhalten kann.

    Mit freundlichen Grüßen,
    poseidon29

  • #2
    Was liefert denn zum Beispiel die error()-Methode? http://php.net/manual/en/mysqli.error.php

    Kommentar


    • #3
      Da fehlen Anführungszeichen.
      [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


      • #4
        Unknown column 'firmendaten' in 'where clause'
        Fatal error: Call to a member function fetch_all() on a non-object

        Ich hatte die Abfrage eigentlich in phpmyadmin getestet und da hat es funktioniert. Firmendaten heißt die datenbank, nach dessen tabellen ich suche.
        Wenn ich die selbe query in phpmyadmin eingebe nur eben die variablen durch die werte ersetze, dann bekomme ich was ich wollte.

        Kommentar


        • #5
          ich hab den Fehler gefunden, danke für die Hilfe. Es waren wirklich die Anführungszeichen. Ich hab in letzter Zeit so viel mit prepared statements gearbeitet, dass ich schlicht vergessen habe die variablen nochmal extra in Anführungszeichen zu setzen, weil man das beim Fragezeichen ja auch nicht macht. Außerdem kopiere ich die Querys immer nur von einer zur anderen Stelle. Ich hab das einfach übersehen. Mir war sogar schon die Lust dran vergangen, naja...
          Vielen vielen Dank

          Kommentar


          • #6
            PHP-Code:
            $query 'SHOW COLUMNS FROM `'.$tableName.'`'
            tut es auch.

            Könnte dich eventuell auch noch interessieren:
            MySQL PDO: Validieren und Maskieren von Feld- und Tabellennamen

            Kommentar


            • #7
              Zitat von jspit Beitrag anzeigen
              PHP-Code:
              $query 'SHOW COLUMNS FROM `'.$tableName.'`'
              tut es auch.
              Nur dass das eine SQL Standard ist und das andere Mysql spezifisch.

              Kommentar


              • #8
                Von welchen der vielen SQL Standards spricht du , erc?
                Und MySQLi kann nur MySQL.
                Was mich an der Query des TE noch interssiert ist, für welche Datenbanken kann die Abfrage noch genutzt werden?

                Kommentar


                • #9
                  Von dem SQL SQL Standard. Mit SQL 2003 wurden die Schemata eingeführt welche auch viele SQL Datenbanken implementiert haben, z.B. mssql, postgres, orcale, mysql. Der Query läuft damit auf all diesen Datenbanken. Davor war es nicht definiert wie Informationen über Tabellen oder besser gesgt Objekte ausgelesen werden konnten. Deswegen hat da auch jede Datenbank noch seine eigene Lösungen mit an Board.
                  In kombination mit Mysql gibt es aber ein zu beachten. Eine Datenbank von Mysql ist im Kontext vom information_schema eine schema und keine datenbank.

                  Kommentar


                  • #10
                    Danke für die ausführliche Anwort. Betrifft also das Segment oberhalb von MySQL. Damit hatte ich bisher nur am Rande zu tun.

                    Kommentar

                    Lädt...
                    X