guma: Prüfen ob ein Dateinamen global in der MySQL-DB vorhanden ist

Hallo alle!

Ich habe gestern eine Löschfunktion mit PHP erstellt, die ausgewählte dateien auf dem Server löscht. Nun, damit der User nicht versehentlich Dateien löscht, die in gebrauch sind (auf CMS Seiten verlinkt) will ich die komplette Datenbank (name: dbcms) in allen feldern prüfen ob die datei drin ist. Wenn ja, dann gebe ich das aus, damit der user informiert ist. falls nicht wird der löschvorgang durchgeführt.

Umsetzung:
mit der suche in einer tabelle einer datenbank kenne ich mich aus. Wie aber kann ich die komplette DB durchsuchen, ohne diese explizit angeben zu müssen. Mir ist das wichtig, da mein system je nach einsatz immer wieder unterschiedliche tabellen hat und ich deshalb global abfragen will.

mir ist klar, dass hier längere laufzeiten entstehen, da alles durchsucht wird. der server hat also etwas mehr arbeit.

was denkt ihr? gibts da was?

guma

  1. Hi,

    was denkt ihr? gibts da was?

    ja da gibts einiges, du solltest dir mal im speziellen:
    http://www.php.net/manual/de/function.mysql-list-dbs.php
    http://www.php.net/manual/de/function.mysql-list-tables.php

    und allgemein
    http://www.php.net/manual/de/ref.mysql.php

    anschaun. da findest du bestimmt etwas.

    MfG

    1. hallo daniel,

      hab ich das richtig verstanden?
      ich prüfe nach tables in der db und lasse mir alle ausgeben, danach kann ich alle ausgegeben tabellen einfach durchsuchen lassen.
      ich versuch das mal so. danke für den tipp!

      guma

      1. Hi,

        hab ich das richtig verstanden?
        ich prüfe nach tables in der db und lasse mir alle ausgeben, danach kann ich alle ausgegeben tabellen einfach durchsuchen lassen.

        nunja, ich hät mir halt eine tabelle anch der anderen geholt und wär sie
        durchgegangen. bis es keine tabellen mehr giebt in der DB. wobei dies
        bei meinen konstrukten (min 50 tabellen / DB) mit mehr als genug daten
        ziemlich zeitaufwendig werden würde und den server ne zeitlang
        beschäftigen.

        ich versuch das mal so. danke für den tipp!

        bitte gern geschehen.

        MfG

    2. Hi,

      ja da gibts einiges, du solltest dir mal im speziellen:

      wenn man ein allgemeines DB-Tool wie PhpMyAdmin schreibt, ist das sinnvoll. Bei Update-Mechanismen o.ä., die mit einem unbekannten Stand der DB zu rechnen haben, auch. In allen anderen Fällen *muss* die Datenbankstruktur als bekannt vorausgesetzt werden. Tut man es nicht, ist das ein ziemlich sicheres Zeichen für einen *sehr* grob fahrlässigen Konzeptfehler.

      Cheatah

      --
      X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
      1. Hi,

        wenn man ein allgemeines DB-Tool wie PhpMyAdmin schreibt, ist das sinnvoll.

        was meinst du wo ich als erstes hin bin? ins php-verzeichniss code guggen.

        Bei Update-Mechanismen o.ä., die mit einem unbekannten Stand der DB zu rechnen haben, auch.

        wenn du den aufbau einer DB nicht kennst wie willst du sie dann
        aktuallisieren? sprich UPDATEn

        In allen anderen Fällen *muss* die Datenbankstruktur als bekannt vorausgesetzt werden.

        na ich werd diese funktionen wohl nie verwenden da ich phpMyAdmin benutz
        und damit zufrieden bin. Optisch sicherlich nicht der hit frameset usw.
        aber was solls, es funktioniert. Vll. irgendwann bau ich ein DB-Tool
        aber nur wenn ich nix anderes zu tun habe.

        MfG

        1. Hi,

          wenn man ein allgemeines DB-Tool wie PhpMyAdmin schreibt, ist das sinnvoll.
          was meinst du wo ich als erstes hin bin? ins php-verzeichniss code guggen.

          ich verstehe den Zusammenhang nicht.

          Bei Update-Mechanismen o.ä., die mit einem unbekannten Stand der DB zu rechnen haben, auch.
          wenn du den aufbau einer DB nicht kennst wie willst du sie dann
          aktuallisieren? sprich UPDATEn

          Lies bitte noch einmal, was ich geschrieben habe.

          Cheatah

          --
          X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
          X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
          X-Will-Answer-Email: No
          X-Please-Search-Archive-First: Absolutely Yes
          1. Ahoi Cheatah,

            was meinst du wo ich als erstes hin bin? ins php-verzeichniss code guggen.
            ich verstehe den Zusammenhang nicht.

            das erste was ich nach dem OP getan habe war ins rootverzeichniss zu
            gehen, dort in das verzeichniss von php-MyAdmin und dort den code
            angeschaut wie sie dort die tabellen holen. jetzt klar?

            Bei Update-Mechanismen o.ä., die mit einem unbekannten Stand der DB zu rechnen haben, auch.
            wenn du den aufbau einer DB nicht kennst wie willst du sie dann
            aktuallisieren? sprich UPDATEn
            Lies bitte noch einmal, was ich geschrieben habe.

            hab ich, du sagst es ist auch bei Update-Mechanismen sinnvoll sich die
            tabellen geben zu lassen, da bin ich aber eben anderer meinung.

            MfG

      2. so hallo cheatah

        du schreibst dass es ein *sehr* grob fahrlässiger Konzeptfehler ist eine db komplett durchsuchen zu lassen.

        in diesem fall soll arbeit beim zusammenstellen der tabellen gespart werden. da es eine funktion gibt die mir die tabellen in einer DB ausgibt nimmt es mir arbeit ab. Dann kann ich die verwenden. jetzt suche in in der tabelle bei feldnamen "images" nach dem namen und wenn er vorhanden ist wird das ausgegeben.

        was ist an dem konzept grob fahrlässig?

        guma

        1. Hi,

          in diesem fall soll arbeit beim zusammenstellen der tabellen gespart werden.

          bitte bei was soll Arbeit gespart werden? Was ist das "Zusammenstellen der Tabellen", was versprichst Du Dir davon, warum ist sowas nötig?

          jetzt suche in in der tabelle bei feldnamen "images" nach dem namen und wenn er vorhanden ist wird das ausgegeben.
          was ist an dem konzept grob fahrlässig?

          Du schießt willkürlich in die Gegend. Im realen Leben nennt man sowas "Amoklauf".

          Cheatah

          --
          X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
          X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
          X-Will-Answer-Email: No
          X-Please-Search-Archive-First: Absolutely Yes
  2. Hi,

    Wie aber kann ich die komplette DB durchsuchen, ohne diese explizit angeben zu müssen.

    das ist meilenweit vom Sinn einer Datenbank entfernt. Somit wurde keine Möglichkeit vorgesehen.

    Mir ist das wichtig, da mein system je nach einsatz immer wieder unterschiedliche tabellen hat

    Hier liegt Dein Konzeptfehler.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes