如何在MySQL数据库中保存文件名?

时间:2017-10-23 18:59:36

标签: php mysqli

我在下面开发了这个代码,用户上传一个文件并将该文件的名称保存在数据库中,以便以后能够访问它,上传正常完成,它转到指定文件夹,但名称没有保存在数据库中,是否有人知道代码有什么问题?特别是在move_uploaded_file下面,因为它到目前为止有效,所以它出错了。

<?php
if (isset($_POST['enviar'])) {
$arq = $_FILES['arquivo']['name'];

$arq = str_replace(" ", "_", $arq);
$arq = str_replace("ç", "c", $arq);

if (file_exists("uploads/$arq")) {
  $a = 1;

  while (file_exists("uploads/[$a]$arq")) {
    $a++;
  }

  $arq = "[".$a."]".$arq;
}

if (move_uploaded_file($_FILES['arquivo']['tmp_name'], 'uploads/'.$arq)) {
  $objDb = new db();
  $link = $objDb->conecta_mysql();
  $sql = "insert into arquivos (email_vol, nomearq) values ('$email', '$arq')";
  if (mysqli_query($link, $sql)){
    echo 'Plano de aula 1 enviado com sucesso!';
  } else {
    echo (mysqli_error($link));
    echo 'Erro ao enviar o plano de aula!';
  }

} else {
  echo "Nenhum arquivo selecionado!";
}

}
?>

这是用于连接数据库的代码:     

class db {
//host
private $host = 'localhost';

//usuario
private $usuario = '111111';

//senha
private $senha = '11111111';

//banco de dados
private $database = 'dsfadsfasd';

public function conecta_mysql(){

//criar a conexão
$con = mysqli_connect($this->host, $this->usuario, $this->senha, $this->database);

//ajustar a charser de cominicação entre a aplicação e o bd
mysqli_set_charset($con, 'utf8');

//verificar se houve erro de conexão
if (mysqli_connect_errno()) {
    echo 'Erro ao tentar se conectar com o banco de dados'.mysqli_connect_error();
}

return $con;
}
}
?>

1 个答案:

答案 0 :(得分:-1)

现在没有权利发表评论,但不应该这样,加上你的sql脚本末尾没有分号

$sql = "insert into arquivos (email_vol, nomearq) values ('" . $email . "', '" 
 .$arq . "');";

还有这个

if (file_exists("uploads/" . $arq)) {
  $a = 1;

  while (file_exists("uploads/". $a . ".". $arq)) {
    $a++;
  }

  $arq = $a.".".$arq;
}

在文件编号和名称之间保持完整