首先:感谢我通过寻找其他人发布的问题的答案而获得的所有帮助。
我有一个小而简单的问题:
我正在尝试随机生成一个数字,但如果它存在于数据库表中,它应该继续生成一个新数字,直到它找到一个唯一的数字。
非常感谢帮助!
$klantnr = rand(1,9);
$kn = mysql_num_rows(mysql_query('select username from users where id="'.$klantnr.'"'));
while($kn!=0){
$klantnr = rand(1,9);
}
echo $klantnr;
答案 0 :(得分:0)
创建表格:
id integer primary key auto_increment
insert into users (id, username) values (NULL, 'name')
insert into users (username) values ('name')
MySQL将为您生成唯一ID
=== update
create table random_id (
id integer,
used tinyint,
primary key(id),
key idx_used(used)
);
for (0..9999) {
rand_id = get_random_id();
insert into random_id (id, used) values (rand_id, 0);
}
当需要随机ID时,只需从random_id表中获取一个:
rand_id = select id from random_id where used = 0;
update random_id set used = 1 where id = :rand_id
use rand_id
实际上它是预先生成的随机ID,如果你只保证来自随机表的用户表的id,你就不需要处理冲突ID:)