我正在使用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拥有的文件名。向前和向上。