我正在使用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);
}
非常感谢任何帮助,我尝试了多种解决方案 无济于事。
答案 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拥有的文件名。向前和向上。