Tabellen ergänzen

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

  • Tabellen ergänzen

    Ich mach mal ein neues Thema auf, da es ja nun auch ein anderes Problem ist
    Ich möchte viele Tabellen ca 50% der vorhandenen mit einem php Script ergänzen.

    SHOW TABLES LIKE 'user_%_mpdl';

    Nun muss das in den Tabellen eingefügt werden.
    ALTER TABLE `user_xxxxx_mpdl` ADD `timestamp` TIMESTAMP NOT NULL ;

    Bitte keine Links zu allgemeinen Manuals posten

  • #2
    Und weiter? Sehe keine Problembeschreibung
    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
    Schön - etwas Geschichte kann ja nicht schaden.
    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

    Kommentar


    • #3
      Re: Tabellen ergänzen

      Original geschrieben von ollimagic

      Ich möchte viele Tabellen ca 50% der vorhandenen mit einem php Script ergänzen.
      Die vorhandenen wären? Sind hier alle Hellseher oder was?
      Oder muss man um dir helfen zu können vorher alle deine Threads durchforsten um im bilde zu sein?

      Ich schreibe jetzt keine Links zu Manuals aber muss sagen das du dir mal schleifen ansehen solltest.. Niemand will hier die Arbeit für dich machen...

      Du zerlegst das was SHOW_TABLES dir zurückgibt über "_" in seine einzelteile (explode)

      Dementsprechend hast du in $string[1] xxxxx stehen.

      Dann baust du über eine schleife dein SQL zusammen und machst damit was du willst (in Datei schreiben, direkt an den MySQL schicken oder was auch immer)
      gruss Chris

      [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

      Kommentar


      • #4
        Die Tabelle sieht so aus:
        id | enabled | type | url | hits | since | title
        Nun soll bei der Tabelle eine neue Zeile eingefügt werden.
        Manuell sieht das so aus:
        ALTER TABLE `user_xxxxx_mpdl` ADD `timestamp` TIMESTAMP NOT NULL ;

        nun sind es leider >400 Tabellen, die so geändert werden müssen.
        Es gibt Tabellen jeweils
        user_%_mpdl die müssen geänder werden und solche:
        'user_%_hdlml' die nicht
        und dann noch ganz andere, die auch nicht.
        Deswegen das SHOW TABLES LIKE 'user_%_mpdl';
        Nun weiss ich aber überhaupt nicht, wie ich das mit php machen kann, und versuche es deswegen hier.
        Vielleicht kann es ja jemand und könnte mir da helfen.
        Ich mache ein wenig mit php und sql aber dafür reicht es eben nicht.

        Kommentar


        • #5
          mann, mann ... wasn db-design. wieso ist das so verkorkst?

          durchlauf eben alle tabelle und führ das ALTER durch, oder viel besser, passe das db-design dahingehend an, daß du nur noch eine tabelle hast. dann ist mit dem ALTER nicht mehr schwer.
          Die Zeit hat ihre Kinder längst gefressen

          Kommentar


          • #6
            Das db design kann ich nicht anpassen, da jeder user seine Tabelle braucht.
            >>durchlauf eben alle tabelle und führ das ALTER durch

            geht das mit php? wenn ja wie? Ist ein wenig zu aufwendig, das manuell zu machen.

            Kommentar


            • #7
              Du sagtest was von SHOW TABLES ....
              Wieso benutzt du das nicht um über PHP deine Tabellen anzupassen?

              PHP-Code:
              $sql "SHOW......";
              $result mysql_query($sql) or die();
              usw
              Bisher sagtest du noch nicht das du keine Ahnung von PHP hast.
              gruss Chris

              [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

              Kommentar


              • #8
                Würde ich ja gerne, weiss aber echt nicht wie.
                Eine kleine Abfrage kann schon, aber das leider nicht.
                Deinen Ansatz finde ich schon klasse

                Kommentar


                • #9
                  Bischen selbst überlegen kann man trotzallem

                  UNGETESTET
                  PHP-Code:
                  $sql "SHOW TABLES LIKE 'user_%_mpdl'";
                  $res mysql_query($sql);

                  while (
                  $row mysql_fetch_array($res)) 
                  {
                      
                  $alter_sql 'ALTER TABLE `'.$row[0].'` ADD `timestamp` TIMESTAMP NOT NULL';
                      
                  mysql_query($alter_sql) or die(mysql_error());

                  gruss Chris

                  [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                  Kommentar


                  • #10
                    Klappt supi.
                    Leider war eine Tabelle kaputt, und konnte nicht mehr aufgerufen werden.
                    Dadurch gingen nur 200 Tabellen.
                    Nun kommt natürlich der error:
                    Duplicate column name 'timestamp'
                    Kann man das so machen, das der Timestamp nur dort gemacht wird, wo noch keiner ist?

                    Kommentar


                    • #11
                      Original geschrieben von derHund
                      oder viel besser, passe das db-design dahingehend an, daß du nur noch eine tabelle hast.
                      <wörtlichgenommen=on>
                      im Ernst? eine Tabelle für die ganze Anwendung?
                      <wörtlichgenommen=off>

                      Kommentar


                      • #12
                        Das beantwortet leider meine Frage nicht.
                        Es müsste mit einer Abfrage gehen wie
                        if {
                        timstamp exists
                        }
                        else
                        {
                        die obige funktion
                        }

                        Kommentar


                        • #13
                          Au mann.... Eigne dir doch wenigstens mal DAS BISCHEN Ahnung an
                          das du die vorhandenen Zeilen selbst erklären könntest...
                          Du scheinst gar nicht zu wissen was ich dir da geschrieben habe...

                          or die(mysql_error()); <--- WEG und den Fehler ignorieren.. Jetzt läuft´s trotzdem weiter....
                          gruss Chris

                          [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                          Kommentar


                          • #14
                            *auf den Augen sitz*
                            Nun klappt es. Vielen dank

                            Kommentar

                            Lädt...
                            X