首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有效检查数据库中是否存在值

有效检查数据库中是否存在值
EN

Stack Overflow用户
提问于 2018-01-11 17:30:05
回答 1查看 69关注 0票数 0

我想生成唯一值并将其保存在数据库中。

代码语言:javascript
复制
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)

代码语言:javascript
复制
$allValues = 'SELECT unique_number FROM table'; //EXAMPLE!

$number = generateRandomString();

while(in_array(number, $allValues)) {
    $number = generateRandomString();
}

2)

代码语言:javascript
复制
function getUniqueNumber($uniqueNumber) {
    return 'SELECT unique_number FROM table WHERE unique_number = ' . $uniqueNumber; //EXAMPLE!
}

$number = generateRandomString();

while(getUniqueNumber($unique)) {
    $number = generateRandomString();
}

但是,如果我有超过100,000条记录,这两种方法的效率都很低。

更好的方法是检查数据库中是否存在值,如果存在则生成新的值?

我也可以使用Doctrine来实现这一点。

EN

回答 1

Stack Overflow用户

发布于 2018-01-11 18:21:33

如果您只需要表中唯一值,最简单的方法是在该表上插入一个自动递增字段,这样每次插入时,数据库都会为您创建该字段:

代码语言:javascript
复制
ALTER TABLE `users` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY

然后,您可以使用mysql_insert_id()PDO::lastInsertId检索该值

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48203629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档