我想生成唯一值并将其保存在数据库中。
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}我有两个选项(伪代码):
1)
$allValues = 'SELECT unique_number FROM table'; //EXAMPLE!
$number = generateRandomString();
while(in_array(number, $allValues)) {
$number = generateRandomString();
}2)
function getUniqueNumber($uniqueNumber) {
return 'SELECT unique_number FROM table WHERE unique_number = ' . $uniqueNumber; //EXAMPLE!
}
$number = generateRandomString();
while(getUniqueNumber($unique)) {
$number = generateRandomString();
}但是,如果我有超过100,000条记录,这两种方法的效率都很低。
更好的方法是检查数据库中是否存在值,如果存在则生成新的值?
我也可以使用Doctrine来实现这一点。
发布于 2018-01-11 18:21:33
如果您只需要表中唯一值,最简单的方法是在该表上插入一个自动递增字段,这样每次插入时,数据库都会为您创建该字段:
ALTER TABLE `users` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY然后,您可以使用mysql_insert_id()或PDO::lastInsertId检索该值
https://stackoverflow.com/questions/48203629
复制相似问题