• Hallo Besucher!

    Du bist neu im Forum? Dann registriere dich hier, um Diskussionen beizutreten oder eigene Themen zu erstellen. Für die Registrierung ist es erforderlich, dass du einen Spielaccount bei Die Stämme hast.

    Andernfalls kannst du dich hier direkt einloggen.

    Falls du dein Passwort vergessen hast, kannst du hier ein neues Passwort anfordern.

[Veraltet] wieder mal mysql

DeletedUser

Gast
und wieder ich und ein mysql prob:

ich habe eine Tabelle mit mehreren Zeilen. Jede zeile stellt einen DS Account account dar. Da ich beim erstellen, aber nur den Namen angebe, hole ich mir die ID über die Weltdaten.
Das funkt soweit auch ganz gut. Nur möchte ich nicht für jeden Benutzer bei dem noch keine ID eingetragen wurde eine query machen.
So jetzt zu meiner eigentlichen Frage:

Kann ich das mit einer einzigen Mysql query machen? Ich habe in einem Array die Benutzernamen als Indexe und die entsprechenden ID's als Wert.

Ich dachte mir wie folgt:

PHP:
mysql_query("Update ds_ds_accs
                       set 
                          ds_acc_id = $benutzer_ohne_id["'acc_name'"]
                       where 
                          ds_acc_id = 0;")or die(mysql_error());

gibt folgendes aus:
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 'where ds_acc_id = 0' at line 1

Abgesehen von dem Fehler kann mein Versuch ja auch gar nicht klappen, da mysql nix mit php arrays zu tun hat.

Aber wie sonst?
Danke schonmal für eure Vorschläge.

DaHaiz
 

DeletedUser

Gast
Code:
mysql_query("Update ds_ds_accs
                       set 
                          ds_acc_id = ".$benutzer_ohne_id['acc_name']."
                       where 
                          ds_acc_id = 0;")or die(mysql_error());

MfG
dispy
 

DeletedUser

Gast
Code:
mysql_query("Update ds_ds_accs
                       set 
                          ds_acc_id = ".$benutzer_ohne_id['acc_name']."
                       where 
                          ds_acc_id = 0;")or die(mysql_error());
das funktioniert aber nur wenn man für jeden zu aktualisierenden Datensatz eine query macht...
wenn die gesamte aktualisierung in einer query durchgeführt werden soll, müssen die Weltdaten auf jedenfall vom MYSQL-server erreichbar sein, sprich in einer Datenbank vorhanden sein...
Ich werd mal schauen ob ich mir was in die Richtung überlegen kann...
aber wenn du die daten nicht in ner DB hast wird das meiner meinung nach unmöglich^^

[€]: hab ne lösung gefunden, die in einer arg vereinfachten datenbankumgebung (2 tabellen(account_data[daten dei angepasst werden müssen] und worlddata[weltdaten], je 2 gleichnamige spalten(name,ID) ) funzt (habs nur soweit getestet, sollte aber auch mit den "normalen" tabellen funktionieren...):
PHP:
mysql_query("UPDATE account_data SET ID = ( SELECT worlddata.ID
FROM worlddata
WHERE name = account_data.name LIMIT 1 )
WHERE ID =0");
musst du halt an deine tabellen anpassen ;-) [/€]

achja:
ähhhm zusammenhang??^^
 
Zuletzt bearbeitet von einem Moderator:

DeletedUser

Gast
das funktioniert aber nur wenn man für jeden zu aktualisierenden Datensatz eine query macht...
wenn die gesamte aktualisierung in einer query durchgeführt werden soll, müssen die Weltdaten auf jedenfall vom MYSQL-server erreichbar sein, sprich in einer Datenbank vorhanden sein...
Ich werd mal schauen ob ich mir was in die Richtung überlegen kann...
aber wenn du die daten nicht in ner DB hast wird das meiner meinung nach unmöglich^^

[€]: hab ne lösung gefunden, die in einer arg vereinfachten datenbankumgebung (2 tabellen(account_data[daten dei angepasst werden müssen] und worlddata[weltdaten], je 2 gleichnamige spalten(name,ID) ) funzt (habs nur soweit getestet, sollte aber auch mit den "normalen" tabellen funktionieren...):
PHP:
mysql_query("UPDATE account_data SET ID = ( SELECT worlddata.ID
FROM worlddata
WHERE name = account_data.name LIMIT 1 )
WHERE ID =0");
musst du halt an deine tabellen anpassen ;-) [/€]

achja:

ähhhm zusammenhang??^^

das problem ist, dass ich nicht alle daten in der DB hab.
Eine andere Lösung wär, wenn ich mit einer Query dann die daten in die DB hau und dann mit deiner o.g. query arbeite. Das wären dann in der Summe 2. Immer noch viel weniger als für jeden Benutzer einzeln.
Ich test das mal so.
 

DeletedUser

Gast
habs geschafft:

PHP:
mysql_query("LOAD DATA INFILE '(*)data/de$row->acc_server/tribe.txt' INTO TABLE (*).ds_w_data FIELDS TERMINATED BY ','")or die(mysql_error());
			
mysql_query("Update ds_ds_accs set ds_ds_accs.ds_acc_id = (select ds_w_data.ds_acc_id from ds_w_data where ds_w_data.acc_name = ds_ds_accs.acc_name) where ds_acc_id = 0")or die(mysql_error());

(*): steht für geheime Infos.
 
Oben