假設一共有四個資料表有關聯資料,其中一個為主表資料刪除同時連同另外三個資料表中的資料也一起刪除,如果按正常的寫法是
寫一個單獨刪除主表欄位的SQL語法
再寫三個刪除關聯資料的foreach抓出資料後迴圈刪除SQL語法
這樣程式又變得很龐大,所以寫了一個批次刪除的function一次就能吧相同查詢條件的資料全部刪除,這樣程式也精簡很多看了也舒服。
方法如下
1、先在function.php中加上以下的function
//引入共用函數
include_once XOOPS_ROOT_PATH."/modules/neillibrary/function.php";
//批次刪除function
function deleteArr($Arrdate=""){
foreach($Arrdate as $key=> $val){
$dbneme=$Arrdate[$key]['dbneme'];
$where=$Arrdate[$key]['where'];
$deleteArr=databasetablewhile($dbneme,$where);
foreach($deleteArr as $k=> $val){
$where=" where `".$Arrdate[$key]['id']."` = '".$deleteArr[$k][$Arrdate[$key]['id']]."'";
$DBname=$Arrdate[$key]['dbneme'];
deletefunction($where,$DBname);
} }
}
寫一個單獨刪除主表欄位的SQL語法
再寫三個刪除關聯資料的foreach抓出資料後迴圈刪除SQL語法
這樣程式又變得很龐大,所以寫了一個批次刪除的function一次就能吧相同查詢條件的資料全部刪除,這樣程式也精簡很多看了也舒服。
方法如下
1、先在function.php中加上以下的function
//引入共用函數
include_once XOOPS_ROOT_PATH."/modules/neillibrary/function.php";
//批次刪除function
function deleteArr($Arrdate=""){
foreach($Arrdate as $key=> $val){
$dbneme=$Arrdate[$key]['dbneme'];
$where=$Arrdate[$key]['where'];
$deleteArr=databasetablewhile($dbneme,$where);
foreach($deleteArr as $k=> $val){
$where=" where `".$Arrdate[$key]['id']."` = '".$deleteArr[$k][$Arrdate[$key]['id']]."'";
$DBname=$Arrdate[$key]['dbneme'];
deletefunction($where,$DBname);
} }
}
2、然後在要刪除資料的PHP用陣列輸入刪除的查詢項目
$Arrdate = array(); //建構陣列
//相同where查詢欄位
$whereDB=" where `basid` = '$dbid'";
//刪英資單位
$i=0;
$Arrdate[$i]['dbneme']="neilbasicinformation"; //資料表名稱
$Arrdate[$i]['where']=$whereDB;
$Arrdate[$i]['id']="basid"; //刪除欄位的ID
//刪英資分類
$i++;
$Arrdate[$i]['dbneme']="neilbritishcapitalsort";
$Arrdate[$i]['where']=$whereDB;
$Arrdate[$i]['id']="sortid";
//刪除英資影片
$i++;
$Arrdate[$i]['dbneme']="neilenmovie";
$Arrdate[$i]['where']=$whereDB;
$Arrdate[$i]['id']="movieid";
//刪除英資相簿
$i++;
$Arrdate[$i]['dbneme']="neilenalbum";
$Arrdate[$i]['where']=$whereDB;
$Arrdate[$i]['id']="albumid";
還能再增加更多的刪除資料表條件
//批次刪除function
deleteArr($Arrdate=$Arrdate);
這樣就OK了,觸發刪除PHP時deleteArr()會按陣列的查詢項目刪除主資料表跟迴圈刪除關聯資料表中全部的資料,達到批次刪除的效果,有需要的朋友參考看看。
教學撰寫:徐嘉裕 Neil hsu
留言
張貼留言