使用数据库表从上载路径中删除文件

时间:2011-10-08 07:00:54

标签: php codeigniter file-upload delete-file

我用以下代码从数据库中删除了图片网址,但是没有从上传路径中删除文件图片,如何在数据库中将URL文件从上传路径中删除(两者一起)?

此php仅适用于数据库中的删除网址:

$delete = $this -> input -> post('checked');
foreach($delete as $val) {
    $this - > db - > delete($this - > _table, array('id' = > $val));
}

更新

我在使用以下代码时遇到错误。

$id = '166';
$query = $this - > db - > get_where('hotel_image', array('id' = > $id));
if ($query - > num_rows() > 0) {
    $res = $query - > row();
    unlink(base_url(uploads/$res - > images));//This is line 161
}
$this - > db - > delete('hotel_image', array('id' = > $id));

错误:(我的图片在此版本中:http://example.com/uploads/

  

遇到PHP错误
严重性:通知
消息:使用   未定义的常量上传 - 假设'上传'
文件名:user / dence.php
行号:161

     

遇到PHP错误
严重性:警告
消息:   unlink()[function.unlink]:http不允许取消链接
  文件名:user / dence.php
行号:161

1 个答案:

答案 0 :(得分:0)

您需要使用unlink()从磁盘中删除文件,只需将文件名作为参数传递。

  

bool unlink(string $ filename [,resource $ context])

     

删除文件名。类似于Unix C unlink()函数。一个E_WARNING   失败时将生成级别错误。

类似的东西(这是简化代码。您可能想要检查数据库中的路径是否完整,否则添加其余部分。):

$delete = $this -> input -> post('checked');
foreach($delete as $val) {
    $this->db->select('images')->from($this->_table)->where('id',$val);
    $query = $this->db->get();
    if($query->num_rows() > 0)
    {
      $res = $query->row();
      $file = './uploads/'.$res - > images));
      // echo $file;  #check if this is the correct path!
      @unlink($file);
    }
    //now query to delete
    $this -> db -> delete($this - > _table, array('id' = > $val));
}