Datenbank schreibt Wert für alle User gleich

Anacondi

Erfahrenes Mitglied
Hallo an alle.
Habe in meiner Datenbank eine Tabelle login und darin eine spalte mit premium und eine mit coins.
jede nacht um 24 uhr startet eine php datei, die abruft, wer premium user ist und diese sollen dann 1 Coin geschenkt bekommen. Mein problem ist, das alle Premium user hinterher die gleiche anzahl an Coins haben, wie der User mit der id 1

PHP:
<?php
$sql11 = "SELECT coins from login Where premium = '1'";
$result11 = mysql_query ($sql11);  

if (mysql_num_rows ($result11) > 0)  
{  
  // Benutzerdaten in ein Array auslesen.  
  $data11 = mysql_fetch_array ($result11);  

  }
$coins = '1';
$coinplus = $data11["coins"] + $coins;
$update = mysql_query("UPDATE login Set coins = '$coinplus' WHERE premium = '1' ");
?>

eigendlich lese ich doch alle user aus die Premium haben und lese auch die derzeitigen Coins aus .
 
Ändere mal diese Zeile:

PHP:
$update = mysql_query("UPDATE login Set coins = '$coinplus' WHERE premium = '1' ");

so ab:

PHP:
$sql = "UPDATE login Set coins = '$coinplus' WHERE premium = '1' ";
$update = mysql_query($sql);

und lass dir dann den Inhalt von $sql mit echo ausgeben.

Dazu kommt noch das du den Wert von coins aus so ändern könntest:

SQL:
UPDATE login SET coins = coins + 1 WHERE premium = 1
 
Zuletzt bearbeitet:
Schreib mal in die WHERE beim Update noch bei welchen user er update muss.
PHP:
$update = mysql_query("UPDATE login Set coins = '$coinplus' WHERE premium = '1'  AND user_id= $id");
ansonsten weis der Script ja nicht wo er was updaten muss und macht es einfach überall^^
 
@Yugeen: Wenn alle User betroffen sind die den status "premium = 1" haben, dann ist es unnötig die user_id in die Abfrage aufzunehmen. Dann reicht die Angabe wie oben eigentlich völlig aus.

Außerdem müsste die Abfrage dann ja für jeden einzelnen User durchgeführt werden und das ist sicher nicht gewollt.
 
Zurück