gpt4 book ai didi

php - 使用 while() 生成随机文件名?

转载 作者:行者123 更新时间:2023-12-01 00:14:36 25 4
gpt4 key购买 nike

我正在使用 while() 循环来创建一个随机文件名,根据数据库检查它,如果它已经存在,则循环。我只是有点担心我的语法/用法不对,因为我很久以前只做过一次,而且从那时起就没有以这种方式使用过 while() 循环。

这是我的代码:

$i = 0;
while(++$i) {
$file_name = md5(mt_rand(0,9999999)) . ".php";
$result = mysql_query("SELECT * FROM x WHERE file_name = '{$file_name}'");

if(mysql_num_rows($result) == 0) { break; } else { continue;}
}

这行得通吗?如果不行,有什么问题吗?

我知道这是一个小问题,但测试这是否可行似乎更“麻烦”(需要创建一个新表,更改文件名以从 1 - 3 项中进行选择,显示一条消息继续等

任何帮助,一如既往,将不胜感激!

最佳答案

您不需要 $i,因为您没有使用它,并且您不需要在循环中 continue - 循环会自动循环,这就是它的作用。只需要在达到要结束循环的条件时break即可:

while(true) {
$file_name = md5(mt_rand(0,9999999)) . ".php";
$result = mysql_query("SELECT * FROM x WHERE file_name = '{$file_name}'");

if (mysql_num_rows($result) == 0) break;
}

不过,您使用哈希的方式有点不对。您应该生成一个比 MD5 哈希更长的随机字符串,而不是更短。现在你只有 10,000,000 个可能的文件名 (0..99999999) 而不是 MD5 可以产生的完整的 2^128。不必担心 2^128 这样大的空间中的哈希冲突,您更有可能简单地生成相同的数字两次,从而导致多次访问数据库。

关于php - 使用 while() 生成随机文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7410766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com