[MYSQL] Update in 2 Zeilen, obwohl nur 1 möglich ist?

BartTheDevil89

Devilution Media
ID: 87739
L
2 Mai 2006
3.960
103
Hallo, ich habe ein Problem.

Ich habe hier folgenden Codeteil:

PHP:
$resua = mysql_fetch_array(mysql_query("SELECT * FROM ".$db_prefix."_games_open WHERE play_id = '".$_SESSION['pid']."' ORDER BY score DESC LIMIT 1")) or die(mysql_error());
$maxpos = $resua['id'];
				
		
mysql_query("UPDATE ".$db_prefix."_games_open SET win = '1' WHERE id='".$maxpos."' LIMIT 1") or die(mysql_error());

Also die Funktion des ganzen soll sein von 2 Einträgen den mit dem höchsten "score" abzufragen und dort eine 1 in "win" reinzusetzen. Aber leider habe ich es immerwieder, dass nicht in einem von beiden die 1 steht, sondern in beiden Einträgen.
Habe dafür jetzt mal eine log-Datei gemacht, die mir die Daten, die dort genutzt werden, speichern und dort kam das raus:

$_SESSION['pid'] = richtige Zahl
$maxpos = richtige Zahl (also die zahl mit dem richtigen Ergebnis)

Weiß jemand, wie es zustande kommen kann, dass trotz der richtigen $maxpos-Zahl auf einmal 2 Einträge geändert werden?

Danke für die Hilfe :roll:
 
Warum machst du es nicht so (Wenn deine Mysql-Version Subqueries unterstützt) ?

PHP:
$update = mysql_query("UPDATE tbl SET win = 1 WHERE id = (SELECT id FROM tbl ORDER BY score DESC LIMIT 0,1");

Query ist nicht ganz richtig, soll nur als Beispiel dienen!
 
Johnson schrieb:
Warum machst du es nicht so (Wenn deine Mysql-Version Subqueries unterstützt) ?

PHP:
$update = mysql_query("UPDATE tbl SET win = 1 WHERE id = (SELECT id FROM tbl ORDER BY score DESC LIMIT 0,1");

Query ist nicht ganz richtig, soll nur als Beispiel dienen!
Hmm, werde es mal damit versuchen, wobei das doch aber nicht wirklich anders ist als meine abfrage
 
Hast Du den Scrollbalken beim Code bemerkt? Hab mich auch erst gewundert, aber da ist noch mehr... ;)
 
tleilax schrieb:
Hab mich auch erst gewundert, aber da ist noch mehr... ;)

Ach, hatte ich auch ganz übersehen :mrgreen:

@Topic: Wenn die id eindeutig ist (z.B. ein (primär) Schlüssel), dann passieren zwei Updates mit dieser Query sicherlich nicht.
 
Johnson schrieb:
Ach, hatte ich auch ganz übersehen :mrgreen:

@Topic: Wenn die id eindeutig ist (z.B. ein (primär) Schlüssel), dann passieren zwei Updates mit dieser Query sicherlich nicht.

auch wenn die id nicht eindeutig wäre... mit LIMIT 1 erwischst du drotzdem nur einen datensatz. das wird wo anders herkommen...
 
BartTheDevil89 schrieb:
Und genau aus diesem Grund kommt mir das ganze ja so spanisch vor! :ugly:

Schreib einfach eine Logger-Klasse, oder durchsuche jedes Dokument einmal nach "...SET win..." - da muss noch irgendwo eine andere Query oder halt eine Schleife schlummern!

Gruß