我想生成唯一值并将其保存在数据库中。
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
我有两个选择(PSEUDO CODE):
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。
答案 0 :(得分:0)
如果您只需要该表中的唯一值,最简单的方法是在该表上插入一个自动增量字段,因此在每次插入时,数据库都会为您创建:
ALTER TABLE `users` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY
然后,您可以使用mysql_insert_id()
或PDO::lastInsertId