Seite 1 von 1

MySQL Frage

Verfasst: 17.09.2005 15:26
von thowa
Tach,

ich wüsste gerne, wie der geschickteste Ansatz lautet, um bei bestimmten Aktionen eines Users in der Datanbank ein Zeitstempel abzulegen.
Etwa so Benutzer XXX hat Objekt YYY um ZZZ betrachtet.

Wenn der entsprechende Eintrag (für Benutzer und Objekt) bereit existiert, soll der Zeitstempel aktualisiert werden.
Wenn nicht, muß der Eintrag erstellt werden.

Mein Hoster Verwendet MySQL 4.0.25-standard.

Danke, Thorsten

Verfasst: 17.09.2005 15:34
von fanrpg

Code: Alles auswählen

$var = time();
$sql = "INSERT INTO `phpbb_bla` (zeitstempel) VALUES ('$var')";

Verfasst: 17.09.2005 15:48
von thowa
Dies führt aber zu mehrfachen Einträgen in der DB wenn der Benutzer das gleiche Objekt mehrfach betrachtet.

Das soll nicht passieren.

Es muss also erst geprüft werden, ob schon ein Eintrag für die Kombination von Benutzer und Objekt schon existiert.

Gibt es da nicht soetwas wie
UPDATE 'tabelle' (user, objekt, zeitstempel) VALUES (user_id, objekt_id, '$var') CREATE_IF_NOT_EXISTS ???

Verfasst: 17.09.2005 17:23
von fanrpg

Code: Alles auswählen

$sql = "SELECT zeitstemper FROM `bla` WHERE `username` = $username LIMIT 1";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result))
{
if($zeitstempelbyuser != $row['zeitstempel'])
{
//Code von oben
}
}

Verfasst: 17.09.2005 19:18
von PhilippK
Zum einen gibt es REPLACE und dann noch ON DUPLICATE KEY UPDATE - siehe http://dev.mysql.com/doc/mysql/en/replace.html

Gruß, Philipp