【问题标题】:PHP mysql successfully upload file to one table but not the otherPHP mysql成功将文件上传到一个表但不是另一个
【发布时间】:2017-10-13 16:25:23
【问题描述】:

我正在尝试将文件上传到数据库(使用 php 和 mysql)。我可以成功上传文件并将其路径保存在一个表中,但是当我尝试将文件上传到另一个表时,我收到一条错误消息:move_uploaded_file: failed to open stream。但是,如果我创建另一个数据库,我可以再次成功上传文件。我可以只将文件上传到一个表而不是同一数据库中的多个表吗?由于我的项目设计,我想将文件上传到同一个数据库中的2个表,有人可以告诉我怎么做吗? 这是可以成功上传文件的代码,表名是photos:

    <?php
    include('config.php');
        $file=$_FILES['image']['tmp_name'];
        $image= addslashes(file_get_contents($_FILES['image']['tmp_name']));
        $image_name= addslashes($_FILES['image']['name']);                   
        move_uploaded_file($_FILES["image"]["tmp_name"],"photos/" $_FILES["image"]["name"]);    
        $location="photos/" . $_FILES["image"]["name"];
        $description=$_POST['description'];
        $save=mysql_query("INSERT INTO photos (location, description) VALUES ('$location','$description')");


        }
    ?>

我尝试通过以下代码将文件上传到另一个表。我只是将照片更改为photos2,photos2是另一个表的名称

<?php
    include('config.php');
        $file=$_FILES['image']['tmp_name'];
        $image= addslashes(file_get_contents($_FILES['image']['tmp_name']));
        $image_name= addslashes($_FILES['image']['name']);                   
        move_uploaded_file($_FILES["image"]["tmp_name"],"photos2/" $_FILES["image"]["name"]);

    $location="photos2/" . $_FILES["image"]["name"];
    $description=$_POST['description'];
    $save=mysql_query("INSERT INTO photos2 (location, description) VALUES ('$location','$description')");                   
 }
?>

我收到以下错误: 警告:move_uploaded_file:无法打开流:没有这样的文件或目录 move_uploaded_file(): 无法将 'C:\XAMPP\tmp\php1793.tmp' 移动到 'photos2/1.png'

另外,我知道 mysql 已被弃用,我需要将其更改为 mysqli,我将在未来这样做,现在我只想知道如何将文件上传到同一个数据库中的 2 个表。

更新:我认为我提出问题的方式引起了我不必要的困惑。这就是我所说的“上传到2个表”的意思:我的网站上有两个页面,我们称它们为页面A和页面B,用户可以在页面A和页面B上传照片,从页面A上传的照片只能看到在页面 A 上,同样地,从页面 B 上传的照片只能在页面 B 上看到。因此,创建 2 个单独的表来存储照片是有意义的。如果它们存储在同一个表中,那么在每个页面上,当 I ("SELECT*FROM photos") 时,查询将搜索从另一个页面上传的所有照片,这是不必要的。我不需要同时将同一张照片上传到两个不同的桌子。

【问题讨论】:

  • 您正在尝试的当然是可能的,尽管您收到的错误消息是由于缺少一个名为 photos2 的 文件夹。您是否尝试上传到同一个文件夹,然后简单地更改表格?如果是这样,请将move_uploaded_file$location 中的photos2 更改为简单的photos。否则,创建photos2 文件夹:)
  • 没有。这是因为他试图从 FROM 移动的文件不存在了,因为他已经移动了它。
  • "现在我只想知道如何将文件上传到同一个数据库中的两个表" - 什么;同时还是在不同的操作中?您的问题不清楚。
  • 您的代码易受 SQL 注入攻击,您需要修复此问题。
  • 我更新了我的问题来回答一些 cmets。

标签: php mysql database mysqli file-upload


【解决方案1】:

当您使用move_uploaded_file 时,文件被移动。因此,当您尝试运行第二段代码时,它将不存在......这很明显。试试这个:

<?php
include('config.php');
    $file=$_FILES['image']['tmp_name'];
    $image= addslashes(file_get_contents($_FILES['image']['tmp_name']));
    $image_name= addslashes($_FILES['image']['name']);                   
    move_uploaded_file($_FILES["image"]["tmp_name"],"photos/" $_FILES["image"]["name"]);    
    copy('photos/'.$_FILES['image']['name'],'photos2/'.$_FILES['image']['name']);
    $location="photos/" . $_FILES["image"]["name"];
    $description=$_POST['description'];
    $save=mysql_query("INSERT INTO photos (location, description) VALUES ('$location','$description')");
    $save=mysql_query("INSERT INTO photos2 (location, description) VALUES ('$location','$description')");
    }
?>

【讨论】:

    猜你喜欢
    • 2016-08-23
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多