phpbar.de logo

Mailinglisten-Archive

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

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

Dario Nuevo php at xbe.ch
Don Sep 4 17:23:34 CEST 2003


hi leute..

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..)

im /var/log/mysql/mysql.log hab ich folgden output, sprich meine klasse 
führt letztendlich die folgenden queries aus
SELECT * FROM `foo_sessions` WHERE `sid`='9d3b2a9ff448a8b6b6d5f704b0' 
AND `addr`='2cafc705671d22fc9f7cfdeaf580ee52' LIMIT 0,1
UPDATE `foo_sessions` SET `expire`=10626840480 WHERE 
`sid`='9d3b2a9ff448a8b6b6d5f704b0' AND 
`addr`='2cafc705671d22fc9f7cfdeaf580ee52'

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 
nicht in meinem mysql.log, wenn da nochwas dran geändert wird..

machen tut das die klasse, source findet sich hier -> 
http://php.xbe.ch/session.phps

zuständig ist die funktion give_lifetime(), welche bei jeder 
instanzierung aufgerufen wird:

function give_lifetime() {
    $this->data["SESSION_EXPIRE"] = 
(time()+60)*$this->cfg["session_howlong"];
    mysql_query(($this->complete_sql("UPDATE `{$this->cfg["db_table"]}` 
SET `expire`={$this->data["SESSION_EXPIRE"]} WHERE `sid`='{$this->sid}'")));
    if(mysql_affected_rows() > 0) return $this->data["SESSION_EXPIRE"];
    else return false;
}

$this->cfg["session_howlong"] is defaultmässig 10.. sprich es zum 
timestamp 600 sekunden addieren, aber nicht das timestamp verdoppeln..!

any hints?!
regards
dario nuevo



php::bar PHP Wiki   -   Listenarchive