台灣最大程式設計社群網站
線上人數
1333
 
會員總數:241127
討論主題:186800
歡迎您免費加入會員
討論區列表 >> PHP >> 如何同時刪除資料庫資料及電腦檔案
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
如何同時刪除資料庫資料及電腦檔案
價值 : 10 QP  點閱數:276 回應數:3

樓主

浩偉
門外漢
0 2
22 0
發送站內信

<?php
require_once("dbtools.inc.php");
$co_id = $_REQUEST["co_id"];
$link = create_connection();
if (isset($_POST["delete"]))
{
$sql = "DELETE FROM product Where co_id = '$co_id'";
if (!execute_sql($link, "ntw", $sql)) //執行SQL指令
$result = "刪除記錄失敗...<br/>" . mysqli_error();
else header("location:sa_product.php"); //成功就轉址
}
else
{
$sql = "SELECT * FROM product Where co_id = '$co_id'";
$result = execute_sql($link, "ntw", $sql);
$row = mysqli_fetch_assoc($result);
}
?>

===================================================================
上面是我們目前做的刪除mysql資料庫內資料的程式
他會抓取我們在網頁點選的產品的co_id,對應資料庫內的co_id按下刪除後,將該筆co_id的檔案全數刪除

但是因為我們再上傳co_id的資料時,可以上傳圖片,但我們能力目前只是把該圖片丟進電腦裡面的一個資料夾
而資料庫裡面圖片那欄則是去抓取對應到的圖片檔名(依照上傳日期時間編號)

那我現在做刪除的動作,只有辦法把資料庫內的那個co_id編號的東西都砍掉,但是電腦裡的圖片檔無法跟著一起砍
請問要怎麼寫程式,讓他可以去抓取co_id裡面的圖片欄位的名稱,並去刪除對應到電腦裡的圖片?

搜尋相關Tags的文章: [ 刪除檔案,抓取名稱 ] ,
本篇文章發表於2017-04-14 16:36
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

clouding
捐贈 VP 給 clouding 檢舉此回應
下午好

1. $_REQUEST 最好不要用 $_POST $_GET 分清楚
2. 刪除資料庫內容之前,先 select 一次 刪除檔案?
本篇文章回覆於2017-04-14 17:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

Ricky是我
檢舉此回應
input 的參數請不要直接拿來組 sql
input 的參數請不要直接拿來組 sql
input 的參數請不要直接拿來組 sql

很重要得說三次,這是個很經典的 sql injection ,資料庫會被清空的。
今天只要某個人把 $co_id 設成 "';DROP TABLE product;"
你的整個 product 就被刪除了
請參考一下 PDO prepare / execute 去避免掉這個問題吧。

本篇文章回覆於2017-04-19 09:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
先針對你的問題回應:

基本上一般是先做select,將要刪除的圖片路徑取出後。
再利用php 的 unlink函數去做刪除檔案。(可在這邊用刪除成功或失敗來判斷是否要刪除資料庫的記錄)
再來delete資料庫的動作。

再來針對你目前程式碼,有太多可怕的寫法了。

1.刪除的動作沒用post傳送??居然是採用網址的傳送方式?這是想要讓人家砍光你的東西才會這樣做。
#2已經有給你很可怕的寫法。

2.mysql函數相關盡量不要使用了。已經快php7了。最好開始學習pdo的用法。免得日後轉換難過。

本篇文章回覆於2017-04-26 17:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.