我想生成唯一的值并保存在数据库中。
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();
}
function getUniqueNumber($uniqueNumber) {
return 'SELECT unique_number FROM table WHERE unique_number = ' . $uniqueNumber; //EXAMPLE!
}
$number = generateRandomString();
while(getUniqueNumber($unique)) {
$number = generateRandomString();
}
但如果我有超过100000条记录,这两种方法都是低效的。
检查数据库中是否存在值并在存在值时生成新值的更好方法是什么?
我也可以用教条来解释。
1条答案
按热度按时间xoefb8l81#
如果您需要该表中的唯一值,最简单的方法是在该表中插入一个自动递增字段,因此每次插入时,数据库都会为您创建以下字段:
然后您可以使用
mysql_insert_id()
或者PDO::lastInsertId