Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php mysql中上载时重命名文件_Php_Mysql - Fatal编程技术网

在php mysql中上载时重命名文件

在php mysql中上载时重命名文件,php,mysql,Php,Mysql,我有一段简单的代码,用于在php/mysql中上传文件,效果很好 $target = "uploads/clients/"; $target = $target . basename( $_FILES['photo']['name']); $pic=($_FILES['photo']['name']); //Writes the photo to the server if(move_uploaded_file($_FILES['photo']['tmp_name'], $t

我有一段简单的代码,用于在php/mysql中上传文件,效果很好

$target = "uploads/clients/";
  $target = $target . basename( $_FILES['photo']['name']);

  $pic=($_FILES['photo']['name']);

  //Writes the photo to the server
  if(move_uploaded_file($_FILES['photo']['tmp_name'], $target))
  {
  $insertSQL = sprintf("INSERT INTO clients (img, `cname`) VALUES (%s, %s)",
                       GetSQLValueString($pic, "text"),
                       GetSQLValueString($_POST['cname'], "text"));

  mysql_select_db($database_thebest, $thebest);
  $Result1 = mysql_query($insertSQL, $thebest) or die(mysql_error());
现在,如果文件名已经存在,我想重命名该文件名,然后将重命名后的文件名插入数据库


感谢您的回复

运行选择查询检查名称是否存在。如果没有,请插入它。因此,从表中选择all,其中name=文件名。如果numrows>0,则更改名称


实际上,您为什么不直接使用自动增量值作为名称,并将您想要调用的内容存储在单独的列中呢。然后,您将知道每个名称都是不同的,并且不会有太长的URL或文件名。

首先,您必须检查该表,该文件名是否已经存在

select * from client where cname="filename";
如果文件名存在,您可以更改文件名。

试试这个

$upload_dir = "uploads/clients/";
$target = $upload_dir . basename( $_FILES['photo']['name']);
while(file_exists($target)){
    $new = time().rand();
    $target = $upload_dir . '_' . $new . '_' . basename( $_FILES['photo']['name']);
}

// rest of the code now...
$pic= $new . ($_FILES['photo']['name']);

你可以用很多方法来做

方法1

保存到服务器之前,请选中
文件\u exists()

if (file_exists("../img/imageDirectory/" . $_FILES["file"]["name"]))
{
   echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
   move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $_FILES["file"]["name"]);
  // Others insert statements here...
}
方法2

使用
microtime()
为每个文件生成唯一的名称:

$temp = explode(".",$_FILES["file"]["name"]);
$newfilename = substr(microtime(), 2, 7) . '.' .end($temp);
move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $newfilename;

函数已弃用。不要再使用它们了


尝试使用或。

非常感谢。我做了一些小的改变,我得到了结果