[PHP] Aktuelles datum nehmen und um 30 erhöhen + in die Datenbank eintragen?

2 Antworten

SET 'Abo' = '$neu'

Die Spaltennamen gehören nicht in Hochkomma

SET Abo = '$neu'

oder

SET `Abo` = '$neu'

sollte gehen

Du kannst die 30 Tage auch direkt im SQL-Statement angeben

$stmt = $mysql->prepare(UPDATE accounts SET Abo = DATE_ADD(CURDATE(), INTERVAL 30 DAY) WHERE ID = ?");
            $stmt->bindParam("i", $_POST["ID"]);

Wobei ich hierbei immer auf die direkte Nutzung der POST-Variablen verzichten würde bzw. erst an eine normale Variable übergeben und prüfen würde.

Aber was genau ist jetzt dein Problem. Was funktioniert nicht? Wie sieht die Fehlermeldung aus?


MinimiTastisch 
Fragesteller
 27.04.2023, 11:47

keine fehlermeldung, aber der datenbank eintrag wird nicht geändert

0
IrockRTC  27.04.2023, 12:04
@MinimiTastisch

Dann musst du Zeile für Zeile prüfen. Lass dir erst einmal den SQL-Query ausgeben, bzw. setze ihn dir zusammen und teste ihn direkt in SQL, die Datenbank sagt dir ja auf jede Fall was sie warum nicht machen kann.

Wenn der SQL-Query passt musst du die Syntax des Codes noch mal durchgehen und auf Fehler prüfen. Dein "Abo" im Query steht zum Beispiel in " ' " Anführungszeichen. Das sollte nicht so sein. Und wenn man Perpare-Statements nutzt, sollte man dann auch keine Variablen direkt in der Anweisung nutzen, wie du hier "$neu". Das funktioniert zwar, aber ist nicht sauber. Wenn du das Datum direkt im Query hinzufügst, brauchst du die Variable gar nicht. Setzt aber voraus, dass das Datum auch als Datum in der Tabelle hinterlegt ist.

0