使用mysql行的标识符

时间:2012-01-08 03:27:14

标签: php mysql

我在php中设置一个事件,并将其保存到mysql。稍后,我想更新事件,但为了知道哪个事件需要更新,我使用它创建的时间。

但是,如果有几个事件从完全相同的第二个开始,如果我们有很多用户,我可能会遇到问题。我的解决方案是检查starttime和usernumber,我认为它应该足够独特。这个可以吗?有更好的方法吗?

首先,在创建活动时:

$starttime = time();
mysql_query("INSERT INTO events (userid, starttime) 
             VALUES ('$userid', '$starttime')");

稍后,更新活动:

mysql_query("UPDATE events 
             SET newdata='$newdata' 
             WHERE starttime='$starttime' 
             AND userid='$userid'"); 

2 个答案:

答案 0 :(得分:6)

糟糕的方式去。只需在该表上放置一个auto_incrementing主键ID字段,这将为您提供一个保证唯一的非重复值,您可以无误地识别行,而不必担心重叠/冲突:

ALTER TABLE events ADD id int unsigned primary key auto_increment;

您可以在插入查询后自动检索该值:

   $sql = "INSERT ...";
   $result = mysql_query($sql) or die(mysql_error());
   $new_id = mysql_insert_id(); // see here: http://us2.php.net/manual/en/function.mysql-insert-id.php

   ... other stuff...

   $sql = "UPDATE ... WHERE id = $new_id;":
   $result = mysql_query($sql) or die(mysql_error());

答案 1 :(得分:1)

使用mysql_insert_id()获取同一连接中上一次INSERT末尾表中自动增量字段的值。