jquery文件上传如何从db表中删除

时间:2013-12-08 22:36:27

标签: php jquery mysql ajax

我正在使用blueimp文件上传程序。我遇到的问题 是否能够在删除文件时更新db表。

当两个不同的用户为上传输入相同的文件名时,它就是 在mysql表中注册为具有相同文件名和不同用户ID的两个不同记录。问题是当您转到“删除”文件名时,它会删除具有该名称的所有文件。这是文件上传部分的代码,可以正常工作:

protected function handle_file_upload($uploaded_file, $name, $size, $type, $error,
        $index = null, $content_range = null) {
    $file = parent::handle_file_upload(
        $uploaded_file, $name, $size, $type, $error, $index, $content_range
    );
    if (empty($file->error)) {
        $sql = 'INSERT INTO `'.$this->options['db_table']
            .'` (`name`, `size`, `type`, `url`, `listid`, `dorder`, `link`)'
            .' VALUES (?, ?, ?, ?, ?, ?, ?)';
        $query = $this->db->prepare($sql);
        $query->bind_param(
        'sisssss',
            $file->name,
            $file->size,
        $file->type,
            $file->url,
            $file->listid,
            $file->dorder,
            $file->link
        );
        $query->execute();
        $file->id = $this->db->insert_id;
    }
    return $file;
}

我遇到的问题是能够将“listid”变量添加到 下面的mysql查询的WHERE子句。 Listid识别用户。这是 从db表中删除文件名的删除代码:

public function delete($print_response = true) {
    $response = parent::delete(false);
    foreach ($response as $name => $deleted) {
        if ($deleted) {
            $sql = 'DELETE FROM `'
                .$this->options['db_table'].'` WHERE `name`=?' ;
            $query = $this->db->prepare($sql);
            $query->bind_param(
            's', 
            $name
            );
            $query->execute();
        }
    } 
    return $this->generate_response($response, $print_response);
}

非常感谢任何帮助,我尝试了多种解决方案 无济于事。

1 个答案:

答案 0 :(得分:0)

找到了一个解决方案,虽然它有点像黑客,但它确实有效。上传程序 是blueimp jquery-file-upload。它使用2个php文件和一组javascript文件。 php文件是index.php和uploadHandler.php。

我在uploadHandler.php文件中捕获了userid。我建立 一个全局变量并将userid分配给它。

$ GLOBALS [' listidDel'] = $ listid;

然后在index.php文件和delete函数中,我更改了sql查询 到:

$ sql =" DELETE FROM " . $this->options['db_table'] . " WHERE listid =" 。 $ GLOBALS [' listidDel']。 "和name =?" ;

有点黑客,它确实有效。现在,当我删除文件时,它只删除了 userid拥有的文件名。向前和向上。