我正在使用blueimp文件上傳程序。我遇到的問題 是在刪除文件時能夠更新數據庫表。jquery文件上傳如何從db表中刪除
當兩個不同的用戶輸入相同的文件名進行上傳時,在mysql表中註冊爲 作爲具有相同文件名和不同用戶標識的兩個不同記錄。問題是當你去「刪除」文件名時,它會刪除所有具有該名稱的文件。這是文件上傳部分工作正常代碼:
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」變量添加到 WHERE下面的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);
}
任何幫助是極大的讚賞,我已經嘗試多種解決方案 無濟於事。
聽起來像你的設置中有一些邏輯問題。允許兩個具有相同文件名的不同用戶是有問題的。你爲什麼這樣做?這是一個有效的用例嗎?你能否簡單地爲每個用戶使用一個文件夾來避免這種情況? –
您應該使用主鍵和用戶ID列執行所有數據庫記錄操作 – Scuzzy
發送到數據庫文件的唯一信息是文件和用戶信息。實際的圖像文件全部上傳到特定的用戶目錄。當文件被刪除時,正確的用戶文件將從用戶映像目錄中刪除,在那裏沒有問題。問題是如何將「listid」變量添加到mysql DELETE語句的WHERE子句中,以便正確更新表。 – Jim