jquery文件上传如何从数据库表中删除


jquery file upload how to delete from db table

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

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

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标识用户。这是从数据库表中删除文件名的删除代码:

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);
}

非常感谢您的帮助,我已经尝试了多种解决方案但无济于事。

找到了一个解决方案,尽管这有点像黑客,但它仍然有效。上传程序是blueimp jquery文件上传。它使用了2个php文件和一组javascript文件。php文件是index.php和uploadHandler.php.

我在uploadHandler.php文件中捕获了用户ID。我创建了一个全局变量,并为其分配userid。

$GLOBALS['listdDel']=$listid;

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

$sql="从" . $this->options['db_table'] . "删除,其中listid="$GLOBALS['listdDel']。"和name=?";

有点黑客,它确实有效。现在,当我删除一个文件时,它只删除用户ID拥有的文件名。向前和向上。