Per PHP mehrer Updates gleichzeitig ausführen

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

  • Per PHP mehrer Updates gleichzeitig ausführen

    Für das aktuelle Problem bitte die letzten Beiträge dieses Threads gucken ;-)
    Zuletzt geändert von Laire; 09.01.2008, 15:22.

  • #2
    Kann ich auch in der Art mehrer Update Befehle in einem String senden?
    Wird afaik von der mysql Bibilothek nicht unterstützt.
    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

    Kommentar


    • #3
      Auf die Art, wie bei einem INSERT, kann das natürlich nicht funktionieren, da für einen UPDATE normalerweise der Primär- (oder ein anderer) Schlüssel benötigt werden. Ein Update auf mehrere Rows kannst du nur mit der WHERE-Klausel erreichen, entweder für alle mit dem gleichen Wert, oder einem von den vorhandenen Daten abhängigen Wert z.B.
      Code:
      UPDATE personal
      SET salaer = salaer * 12.5
      WHERE name IN ('H2O', 'Laire', 'tontechniker')
      Gruss
      H2O

      Kommentar


      • #4
        Hm, kann ich nicht mehrer Updates in ein mysql_query bringen.

        Will nicht für jedes Update die Datenbank neu ansprechen...

        Kommentar


        • #5
          Wenn du uns sagst, was genau du überhaupt machen willst, wäre das für die Lösungsfindung sehr hilfreich.

          @H2O: Das geht aber auch nur, wenn du Felder mit zu den bisherigen Werten in Relation stehenden Werten updaten willst. Ich kann zum Beispiel nicht sagen, dass H20 Nun den Nick h3o haben soll, tontechniker jetzt krachmann heißt und Laire in Lassie umbenannt werden soll. Dafür muss ich drei einzele Queries rausjagen. Was ich persönlich auch nicht schlimm finde.
          Zuletzt geändert von unset; 09.01.2008, 13:42.
          [FONT="Helvetica"]twitter.com/unset[/FONT]

          Shitstorm Podcast – Wöchentliches Auskotzen

          Kommentar


          • #6
            Hm, kann ich nicht mehrer Updates in ein mysql_query bringen.
            Wie schon erläutert nein.
            Will nicht für jedes Update die Datenbank neu ansprechen...
            Du öffnest doch sowieso nur einmal eine Verbindung zur Datenbank (mysql_connect), danach ist es kein Unterschied mehr ob du nun mehrmals mysql_query aufrufst oder einmal mit allen Querys.
            OffTopic:
            krachmann

            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

            Kommentar


            • #7
              Original geschrieben von tontechniker
              Wie schon erläutert nein. Du öffnest doch sowieso nur einmal eine Verbindung zur Datenbank (mysql_connect), danach ist es kein Unterschied mehr ob du nun mehrmals mysql_query aufrufst oder einmal mit allen Querys.
              Das ist auch nicht ganz richtig. Du hast zwar die Verbindung die Laufzeit über offen (sofern man sie nicht nach jedem Query wieder zu macht ), Daten schicken bedeutet aber Overhead auf Layerebene. Zweimal Daten schicken bedeutet zweimal Overhead. Und so weiter und so fort.

              Ich kann mich auch irren, aber konnte man es nicht einstellen, dass man meherere Queries auch mit mysql_query getrennt durch ein Semikolon schicken kann?
              [FONT="Helvetica"]twitter.com/unset[/FONT]

              Shitstorm Podcast – Wöchentliches Auskotzen

              Kommentar


              • #8
                In einer Schleife, sammelt mein Script Daten, welche dann in einer Datenbank aktualisiert werden soll.

                Anstatt die Datenbank dann in jedem durchlauf ständig einzeln anzusteuern, sondern nachher gesammelt, ist bei ca. 1000 Datensätze schon zeitlich optimaler...

                Kommentar


                • #9
                  Du kannst Deine Daten konsolidieren, so wie H2O vorgeschlagen hat (gleiche Endwerte in ein query)

                  oder das UPDATE auslagern (cronjob o.ä.)
                  Beantworte nie Threads mit mehr als 15 followups...
                  Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                  Kommentar


                  • #10
                    Original geschrieben von Laire
                    In einer Schleife, sammelt mein Script Daten, welche dann in einer Datenbank aktualisiert werden soll.
                    WAS für Daten. Konkrete Beispiele!
                    [FONT="Helvetica"]twitter.com/unset[/FONT]

                    Shitstorm Podcast – Wöchentliches Auskotzen

                    Kommentar


                    • #11
                      Hm das dürfte auch nicht gehen...

                      Der Datenbankaufbau ist:

                      ID NICK KEY USAGE


                      Jetzt durchsucht er eine Datei, wenn in einer spalte NICK und KEY vorkommen wird USAGE um eins erhöht.

                      Der gleiche Nick kann mit verschiedenen Keys vorkommen und der gleich Keys mit verschiedenen Nicks.

                      Jede Kombination wird extra gespeichert.

                      Momentan habe ich es so:

                      PHP-Code:
                       $abfrage mysql_query 
                      ("SELECT id, usage FROM nick WHERE key = '".$key."' AND nick = '".$nick."'"); 
                      $row mysql_fetch_array($abfrage);
                      {
                      $row[usage]++;
                      mysql_query("UPDATE nick SET  = '".$row[usage]."' WHERE id = '".$row[id].'");

                      Kommentar


                      • #12
                        PHP-Code:
                        $sQuery "UPDATE nick SET usage = usage+1 WHERE key = '"$key."'"
                        OffTopic:
                        Auch wenn deinen Aufbau, wenn ich das alles richtig verstehe für ziemlichen Käse halte ...
                        Zuletzt geändert von unset; 09.01.2008, 14:45.
                        [FONT="Helvetica"]twitter.com/unset[/FONT]

                        Shitstorm Podcast – Wöchentliches Auskotzen

                        Kommentar


                        • #13
                          OK istschonmal kürzer... aber muss ich immer noch 1000x einzeln ausführen...

                          Kommentar


                          • #14
                            Wie gesagt, der Aufbau ist blöd, aber ok.

                            Du kannst als WHERE-bedingung noch "nick IN (nick1, nick2, nick3, etc)" angeben, da kannst du dann alle Nicks reinpacken.

                            Außer natürlich jeder nick hat einen anderen key, dann kommst du schlicht nicht um dutzende Abfragen drumherum. Aber dann hättest du vorher mal über das Problem nachdenken und deine Datenbank bzw. dein komplettes System entsprechend ausrichten sollen.

                            Edit: Dein Code da oben müsste dir übrigens einen Fehler nach dem andern um die Ohren hauen!
                            [FONT="Helvetica"]twitter.com/unset[/FONT]

                            Shitstorm Podcast – Wöchentliches Auskotzen

                            Kommentar


                            • #15
                              Hm, was ist denn an dem Aufbau so schlimm?

                              Ich will halt eine Anzahl aller verwendeten key + nick kombinationen haben.

                              Hm was ist an dem code so falsch?

                              Kommentar

                              Lädt...
                              X