【问题标题】:Deleting files from server using PHP使用 PHP 从服务器中删除文件
【发布时间】:2016-02-12 10:45:28
【问题描述】:

我的服务器存储 2 个视频文件和 2 个数据库记录。

如果用户选择删除文件,我会尝试从我的数据库中删除它。

从数据库中删除的脚本:

$result = mysqli_query($db_connection , "DELETE FROM `viewvideo` WHERE `video_id`='".$video_id."'");
$result2 = mysqli_query($db_connection , "DELETE FROM `video480p` WHERE `video_id`='".$video_id."'");

使用此脚本检索文件路径:

$deleteOrigVideo = mysqli_query($db_connection, "Select video_link FROM viewvideo WHERE `video_id`='".$video_id."'");
$delete480pVideo = mysqli_query($db_connection, "Select video_link FROM video480p WHERE `video_id`='".$video_id."'");

删除文件:

unlink($deleteOrigVideo);
unlink($delete480pVideo);

取消链接部分不起作用。我得到 unlink() 期望参数 1 是有效路径,

原始视频存储在original中,480p视频存储在original\480p

var_dump($deleteOrigVideo, $delete480pVideo);

输出:

   object(mysqli_result)[2]
      public 'current_field' => null
      public 'field_count' => null
      public 'lengths' => null
      public 'num_rows' => null
      public 'type' => null
    object(mysqli_result)[3]
      public 'current_field' => null
      public 'field_count' => null
      public 'lengths' => null
      public 'num_rows' => null
      public 'type' => null

【问题讨论】:

  • 你能显示var_dump($deleteOrigVideo, $delete480pVideo);返回的内容吗?
  • 检查文件权限。
  • 另外,您可能应该使用准备好的语句,而不是在查询中注入 $video_id,但是,这超出了这个问题的范围;)
  • 您只运行一个不返回任何数据的query,它只返回一个mysqli_result 对象。你需要做某种mysqli_fetch_*() 来获得结果集
  • @Will 将输出添加到我的帖子中。

标签: php


【解决方案1】:

$deleteOrigVideo 和 $delete480pVideo 不是字符串;它们是 MySQLi 查询结果对象

你会想做这样的事情(重复第二个视频):

if($deleteOrigVideo) {
    while ($videoEntry = $deleteOrigVideo->fetch_assoc()) {
        unlink($videoEntry['video_link']);
    }
} 

我假设“$videoEntry['video_link']”返回的路径指向您希望它们到达的位置。

【讨论】:

  • 你不需要一个while循环,他的查询搜索一个特定的ID。
  • 我想过这个问题,但想知道它是否会在未来对人们有所帮助。有效点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-15
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多