[MySQL] INSERT in for-Schleife

mC pAiN

Erfahrenes Mitglied
Hallo,

Situation:
Ich habe beliebig viele Tabellen in einer Datenbank, die alle bis auf eine laufende Nummer gleich benannt sind, z.B. "spielerdaten_1", "spielerdaten_2" usw. In den Tabellen stehen dann Spielerwerte.

Vorgang/Fehler:
Wenn ich jetzt über ein Script einen neuen Spieler hinzufügen möchte, soll er diesen Spieler in alle Tabellen eintragen mit jeweils den gleichen Werten (die über ein Formular kommen). Ich habe gedacht, dass ich das über eine for-Schleife mache, da die Anzahl an Tabellen ja innerhalb von unbestimmten Zeiträumen größer wird. Ich hatte folgendes vor, was aber irgendwie nicht funktioniert:

PHP:
   for($i=0; $i<$anz_tab; $i++) {
        $aktuell  = "spielerdaten_";
        $aktuell .= $i;
        $daten   = "INSERT into " . $aktuell . " VALUES ('', ".$_POST["nummer"].", '".$_POST["vname"]."', '".$_POST["nname"]."', USW...;
        if(!$daten)
           die("Fehler: " .mysql_error());
   }

In $anz_tab steht der Wert für die Anzahl an Tabellen. Warum klappt das nicht?
 
Hi,

Ich kenn mich mit MySQL nicht aus, aber fehlen da am Anfang von deinem Query nicht noch ein paar Hochkommas?
Und muss das Query nicht auch noch an die DB geschickt werden?
 
mC pAiN hat gesagt.:
Situation:
Ich habe beliebig viele Tabellen in einer Datenbank, die alle bis auf eine laufende Nummer gleich benannt sind, z.B. "spielerdaten_1", "spielerdaten_2" usw. In den Tabellen stehen dann Spielerwerte.

Das finde ich nicht besonders elegant. Warum speicherst du nicht alle Spieler in einer Tabelle? Das würde das Handling wesentlich vereinfachen.

Mirko
 
niggo hat gesagt.:
Hi,

Ich kenn mich mit MySQL nicht aus, aber fehlen da am Anfang von deinem Query nicht noch ein paar Hochkommas?
Und muss das Query nicht auch noch an die DB geschickt werden?

ja, ich hatte das mysql_query() kurzzeitig rausgenommen weil ich mir den INSERT ausgeben lassen wollte. Hatte es hier im Code vergessen wieder rein zu tun ;)


network lab hat gesagt.:
Das finde ich nicht besonders elegant. Warum speicherst du nicht alle Spieler in einer Tabelle? Das würde das Handling wesentlich vereinfachen.

Mirko

das hat den Grund, dass ich die Daten von vorher immer brauche, da ich eine Übersicht machen möchte (Grafik), in der man die Werte anhand eines Liniendiagramms einsehen kann (also wie sie sich im Laufe der Zeit geändert haben).
 
Hallo,

warum fügst du immer was zu $aktuell mit Hilfe von .= was hinzu?
PHP:
for($i=0; $i<$anz_tab; $i++) { 
        $aktuell  = "spielerdaten_"; 
        $aktuell .= $i; 
        $daten   = "INSERT into " . $aktuell . " VALUES ('', ".$_POST["nummer"].", '".$_POST["vname"]."', '".$_POST["nname"]."', USW...; 
        if(!$daten) 
           die("Fehler: " .mysql_error()); 
   }

Beim zweiten mal kommt dann anstatt von 2 eine 12, weil sich der String einfach ranhängt.


Tobee
 
Ne, ich setze doch $aktuell vorher wieder aud 'spielerdaten_'


Fehlermeldung ist übrigens folgende:
Fehler: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
 
Zuletzt bearbeitet:
Hallo!

Versuche es mal so:
PHP:
$daten = "INSERT into " . $aktuell . " VALUES ('', '".$_POST['nummer']."', '".$_POST['vname']."', '".$_POST['nname']."', USW...);";
Gruss Dr Dau
 
Hey,

danke, das hat geklappt. So ein Symikolon ist schon ein nicht zu unterschätzendes Zeichen :p

DANKE nochmal ;)
 
Zurück