mysql_query("LOCK TABLES `counter` WRITE;") or die(mysql_error());
$res = mysql_query("SELECT `unID` FROM `counter`;") or die(mysql_error());
$row = mysql_fetch_assoc($res);
$unID = $row['unID'] + 1;
mysql_query("UPDATE `counter` SET `unID`=`unID`+1;") or die(mysql_error());
mysql_query("UNLOCK TABLES;") or die(mysql_error());
这是100%保证 $ unID 对于访问网络的每个用户都是唯一的吗?
mysql表类型:MyISAM
答案 0 :(得分:1)
或者,你可以创建一个序列表:
CREATE TABLE sequence (id INT NOT NULL);
INSERT INTO sequence VALUES (0);
然后使用此查询获取下一个ID:
UPDATE sequence SET id=LAST_INSERT_ID(id+1);
您可以使用mysql_insert_id()
来获取ID。
顺便说一下,尝试使用PDO
或mysqli
。
答案 1 :(得分:1)
从手册:
只有持有锁的会话才能访问该表。在释放锁之前,没有其他会话可以访问它。
所以答案是肯定的,这个数字将是唯一的。