Datenbank Update falsch

Anacondi

Erfahrenes Mitglied
Hi, irgendwie finde ich den Fehler hier bei diesem Code nicht.
Ha ein User z.B. 10 Tage Premium, soll nach aufruf der seite 1 tag abgezogen werden. die anderen User aber die kein POremium haben , da soll es auf 0 bleiben.
Bei diesen Code hier wird aber alles , auch die Premium haben auf 0 gesetzt.
PHP:
<?php
include ("dbconnect.php");
$sql = "SELECT * from login ";  
$result = mysql_query ($sql);  

if (mysql_num_rows ($result) > 0)  
{  
  // Benutzerdaten in ein Array auslesen.  
  $data = mysql_fetch_array ($result);  
}
 $premium = $data["premium"] - 1;
  if ($data["premium"] < 1)
     $premium = 0;
  
  $update = mysql_query("UPDATE login Set premium = '$premium'");
  ?>
 
Hey,

dir fehlt die WHERE Klausel.

PHP:
mysql_query("UPDATE login Set premium = '$premium' WHERE user_id = xyz");
dann würdest du den Premium eines Benutzers anpassen

Oder
SQL:
UPDATE login Set premium = premium - 1
(ungetestet; zudem musst du mit einem IF in SQL prüfen, ob das Feld > 0 ist)

mfg
bo
 
Zuletzt bearbeitet von einem Moderator:
Du musst auch in der UPDATE-Anweisung mit WHERE die entsprechende Bedingung angeben


SQL:
UPDATE tabelle SET feld1 = 'abc' WHERE feld2 = 1

Genauer kann ich es dir leider nicht erklären weil mir nicht klar ist welche Felder bei dir angesprochen werden müssen!
 
Genau das ist aber mein Problem. mit der Where anweisung gehts ja. aber ich will diesen Code in meine cronjob.php einbauen, die 0:00 uhr automatisch startet und alle user ansprechen soll und nicht nur einen
 
Dann erkläre mal ein bisschen genauer was du genau machen willst und welche der Datensätze genau geändert werden sollen und welche nicht.

Oder meinst du es etwa so:

SQL:
UPDATE login Set premium = '$premium' WHERE premium > 0

oder vielleicht so:

SQL:
UPDATE login Set premium = premium - 1 WHERE premium > 0
 
Zuletzt bearbeitet:
Zurück