因此,我要为每个新用户生成一个ID。这将是独一无二的。小号
function generateRandomString($length = 8) {
$characters = '0123456789';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}
现在这就是我的全部工作
//Generate truly unique ID
function generateRandomString($length = 8) {
$characters = '0123456789';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}
$unid = generateRandomString();
//Check if ID OG
$idog = $con->prepare("SELECT * FROM users WHERE user_id = :uid");
$idog->bindValue(':uid', $unid);
$idog->execute();
//Loop if ID not OG
while ($idog->rowCount() > 0) {
function generateRandomString($length = 8) {
$characters = '0123456789';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}
}
$unid = generateRandomString();
现在,我假设只要使用ID,它就会一直循环播放。我无法测试,只是因为这需要一段时间。所以基本上我的问题是,逻辑对吗?它会一直循环直到生成新的ID吗?有没有更有效的方法可以做到这一点?
最佳答案
您是否需要一个随机字符串作为ID的原因?因为您标记了mysql,所以我假设这是您的数据库,所以为什么不直接将用户插入表中,然后执行此查询“ SELECT LAST_INSERT_ID()”。假定“ id”列为“ AUTO_INCREMENT”值。请注意,您需要将插入内容和最后一个插入的ID的调用包装在事务中,以确保返回的ID来自刚刚执行的插入操作。
我意识到您的问题是您的逻辑是否正确,但感觉就像您在尝试重新发明轮子。使用已经提供给您的数据库功能。