phpbar.de logo

Mailinglisten-Archive

[dbs] wert nach update doch nicht up-to-date?

[dbs] wert nach update doch nicht up-to-date?

Ralf Geschke ralf at kuerbis.org
Don Sep 4 17:30:50 CEST 2003


On Thu, 04 Sep 2003, Dario Nuevo wrote:

> ich hab eine klasse ("sessionara", infos auf php.dn2k.ch), welche ein 
> timestamp in der datenbank (mysql) updaten soll. leider ist eine total 
> falsche zahl dann in der tabelle als es sein sollte. die zahl ist viel 
> zu hoch, sprich das timestamp in sehr sehr ferner zukunft und so kann 
> ich dann den record nicht rauslöschen (löschen folgt anhand des 
> timestamps..)

Dir ist aber schon klar, dass der MySQL-Typ "timestamp"
kein Timestamp im Unix-Format, wie ihn die PHP-Funktionen
generieren, darstellt?
Bzw. in welchem MySQL-Typ speicherst Du den Timestamp?

Zeig' mal die Datenbank-Definition und das entsprechende
Codefragment. 

> 2 sehr einfache queries also. nun gehts ums feld "expire".. grad nach 
> dem update hat expire aber einen ganz anderen wert als den gesetzten, 
> nämlich '2147483647^! wieso?? wie kann das sein? wieso steht sowas dann 

Der MySQL-Typ "timestamp" wird automatisch geaendert. Falls Du
diesen verwendest, ist dies die Erklaerung. 
falls nicht, der von Dir genannte Wert sieht sehr nach 
dem maximalen Wert fuer Integer-Felder aus. 
Hast Du versucht, einen Wert, der groesser ist als jener,
in ein Integer-Feld zu speichern?

> (time()+60)*$this->cfg["session_howlong"];

Also Unix-Timestamp. Der kann gross werden, duerfte damit
nicht in ein Integer-Feld passen. Siehe
http://www.mysql.com/doc/en/Column_types.html

> any hints?!

Speichere den Unix-Timestamp in einem (var)char-Feld. 
Oder verwende datetime-Felder, fuer die Umwandlung von und
in andere Formate stellen sowohl MySQL als auch PHP 
Funktionen zur Verfuegung. 

Beste Gruesse,
   Ralf
-- 
::  php::bar | Der Treffpunkt fuer Einsteiger und Fortgeschrittene 
::  http://phpbar.de

php::bar PHP Wiki   -   Listenarchive