Mailinglisten-Archive |
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