2016-05-20 19 views
0
$tblarray = array("abc1","abc2","abc3");  

$sql = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES 
WHERE table_type ='base table' and TABLE_CATALOG='mydb' order by TABLE_NAME"; 
$res = mssql_query($sql); 
while($rowTable = mssql_fetch_array($res)) 
{ 
    if(in_array($rowTable['TABLE_NAME'],$tblarray)) 
    { 
    $sqlDel = "SELECT DISTINCT concat('TRUNCATE TABLE',TABLE_NAME,';') 
    FROM INFORMATION_SCHEMA.TABLES 
    WHERE TABLE_NAME LIKE 'abc%' AND TABLE_SCHEMA = 'mydb'"; 
    $res_sqlDel = @mssql_query($sqlDel); 
    } 
} 

Zuerst bekomme ich alle Tabellen Namen aus der Datenbank und dann bestimmte Tabellen abschneiden. Aber dieser Code funktioniert nicht richtig.sql - Wie kann ich mehrere Tabellen in MySql abschneiden?

Antwort

0
select Table_name from information_schema.tables where table_schema='YOUR_DB_NAME'; 

Werden alle Tabellennamen

1) Iterate über die Ergebnismenge zurück.

2) Erstellen Sie eine andere SQL-Abfrage wie

$query= "truncate table ".$resultSetRow['Table_name']; 

es in der Schleife ausführen. Im Grunde iteriert es über die Ergebnismenge und schneidet alle Tabellen nacheinander ab.

+0

Eigentlich möchte ich einige bestimmte Tabellen nicht alle die Tabelle abschneiden, also kann ich das tun? $ query = "truncate table" $ resultSetRow [ 'Table_name'] „WHERE TABLE_NAME LIKE 'abc%' –

+0

@MuhammadHassan dann aktualisieren Sie Ihre Abfrage wie folgt:.. wählen Table_name aus INFORMATION_SCHEMA.TABLES wo table_schema = 'YOUR_DB_NAME' und Tabellenname wie 'abc%' –

+0

Ok Fertig, vielen Dank @Danyal Sandeelo –