php – MySQL插入独特的技术

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – MySQL插入独特的技术脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个PHP应用程序,它将数据插入 MySQL,其中包含一个随机生成的唯一值.该字符串将具有大约10亿种可能性,任何时候可能不超过1或2百万个条目.从本质上讲,数据库中不存在大多数组合.

我试图找到最便宜的方法来确保插入的唯一值.具体来说,我的两个选择是:

>拥有一个生成此唯一ID的函数.在每一代中,测试数据库是否存在该值,如果是,则重新生成,如果否,则返回值.
>生成随机字符串并尝试插入.如果插入失败,则测试错误为1062(密钥Y的MysqL重复条目X),重新生成密钥并插入新值.

依赖MysqL错误重新尝试插入是不是一个坏主意?正如我所看到的,该值可能是唯一的,似乎初始(使用技1)是不必要的.

编辑#1

我还应该提到,值必须是6个字符长度的字符串,由大写字母和/或数字组成.它们也不能增量 – 它们应该是随机的.

编辑#2

作为旁注,我正在尝试为难以猜测的礼券创建兑换代码.使用数字和字母为每个字符创建36种可能性,而不是仅为数字为10或仅为字母为26.

这是我创建的解决方案的精简版本.在表中输入的第一个值是主键,它是自动递增的.如果插入成功,affected_rows()将等于1:

$code = $build_code();
 while ((INSERT INTO certificates VALUES ('',$code) ON DUPLICATE KEY UPDATE pk = pk) && affected_rows() == 0)
      $code = $build_code();

解决方法

不.如果你愿意,可以继续使用它.事实上,许多人认为如果你检查它是否存在,那么插入是安全的.但是除非你锁定表格,否则另一个进程总是可以插入并获取id.

因此,如果它适合您的目的,请继续生成随机ID.只需确保您测试代码,以便正确处理重复.可能对记录重复只是有用,以确保您对unlikey dups的发生方式的假设是正确的.

脚本宝典总结

以上是脚本宝典为你收集整理的php – MySQL插入独特的技术全部内容,希望文章能够帮你解决php – MySQL插入独特的技术所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。