PHP如果一个值存在于数据库中,我如何按顺序重命名一个新值


PHP if a value exists in database, how can i rename a new value in sequence?

我在mySQL表中有一个字段用于文件名,当新文件上传时,函数检查该文件名是否已经存在。如果相同的文件名存在,我如何更改新文件名:

filename.jpg, filename_(1).jpg, filename_(2).jpg等

我得到了大部分如何做到这一点,只是不确定如何使重命名它的函数知道文件名中是什么数字(如果有的话)以及下一个数字是什么。

欢呼

最简单的答案是在上传时生成唯一的文件名,使用时间和用户的某种组合。比如:

$user_id . time() . $user_provided_name . "." . $file_type

如果您在循环中使用file_exists()来探测文件的存在,那么您可以包含这个来增加数字后缀:

$filename = preg_replace('# (_'(  ('d+)  '))?  (?='.'w+$) #ex',
            '"_(" . ($2+1) . ")"', $filename, 1);

同样可以用strpos/substr函数完成。这样看起来就不像胡言乱语了

你可以使用COUNT:

SELECT COUNT(*) AS NumberFiles FROM Files WHERE FileName = '$filename'

然后,根据您的查询结果,使用$result[0]['NumberFiles']重命名您的文件。

您可能还想锁定您的文件表(或任何它是)