2010-07-29 24 views

回答

3
SELECT TABLE_NAME, GROUP_CONCAT(DISTINCT COLUMN_NAME SEPARATOR ',') AS columns 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'yourdatabasename' 
AND COLUMN_NAME IN ('applicationid', 'schoolid', 'familyid') 
GROUP BY TABLE_NAME 

結果將是各表的陣列,並且它具有(僅來自該組`的applicationID,schoolid,FAMILYID的),爲逗號分隔字段的列。

foreach ($results as $result) { 
    $cols = explode(',', $result['columns']); 
    foreach ($cols as &$col) { 
     $col .= ' = 123'; 
    } 
    $sql = 'DELETE FROM '. $result['TABLE_NAME']. 
     ' WHERE ' . implode(' OR ', $cols); 
} 

這會產生像每個表的查詢:

DELETE FROM table1 WHERE applicationid = 123 OR schoolid = 123 

而且它只包括表中的字段...

0

首先使用SHOW TABLES遍歷表列出來獲得表的名單,然後和使用DELETE FROM tablename WHERE field=?

重要說明:您應該有權使用SHOW TABLES

0

如何

$showtablequery = " 
SHOW TABLES 
FROM 
[database] 
"; 

$ x ='0'; $ showtablequery_result = mysql_query($ showtablequery); while($ r = mysql_fetch_array($ showtablequery_result)) { $ query =「DELETE FROM $ r [$ x] WHERE applicationid = 123 OR schoolid = 123 OR familyid = 123」; $ X ++ }