Für das aktuelle Problem bitte die letzten Beiträge dieses Threads gucken ;-)
Per PHP mehrer Updates gleichzeitig ausführen
Einklappen
X
-
Kann ich auch in der Art mehrer Update Befehle in einem String senden?Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]
-
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
-
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.
Kommentar
-
Hm, kann ich nicht mehrer Updates in ein mysql_query bringen.Will nicht für jedes Update die Datenbank neu ansprechen...OffTopic: krachmannDie Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]
Kommentar
-
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.
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?
Kommentar
-
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
-
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
-
Original geschrieben von Laire
In einer Schleife, sammelt mein Script Daten, welche dann in einer Datenbank aktualisiert werden soll.
Kommentar
-
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
-
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.
Kommentar
-
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!
Kommentar
Kommentar