368 字2 分钟
删除 MySQL 数据库中特定前缀的表
打开我的另一个网站的 mysql 数据库看了一下,一个库里竟然有 750 多张表格,关键是有很多是没有用的空表格。其实也没有太大的关系,主要就是管理起来不太方便。700 多个表格不是一下子就可以打开 phpMyAdmin 管理的,会很慢甚至打不开。
于是找来下面的代码,删除特定前缀的表。
<?php/*xuanfunction 删除数据库中有特定前缀的表*$dbname 数据库名*$tableflag 表前缀,这里标志出是哪一个用户,如表s00002_goods前缀为s00002*/function deldata($dbname,$tableflag){$db_host = 'localhost';$db_port = '3306';$db_user = 'user';$db_pass = 'pass';$connect =mysql_connect($db_host,$db_user,$db_pass);mysql_select_db($dbname);$result = mysql_query("show table status from $dbname",$connect);$data=mysql_fetch_array($result);while($data=mysql_fetch_array($result)) {$table=mysubstr($data[Name],"_");//截取当前表的下划线以前的字符串得到表前缀if($table==$tableflag){ //判断截取的前缀是否等于自己需要的前缀$tableflag,如果是就删除该表//测试之用/*echo $data[Name];echo "<br>";echo $table;echo "<br>";*/mysql_query("drop table $data[Name]");}}return true;}/*截取某个特定字符前的所有字符函数*$str 为待截取字符串*$flag 特定字符如“_”*/function mysubstr($str,$flag){$pos=strpos($str,$flag);return substr($str,0,$pos);}?><?php //test$dbname="dbg0001";//数据库名$tableflag="s000002";//要删除的表的前缀,有这个前缀的表才删除,标志出是哪一个用户deldata($dbname,$tableflag);//$test=mysubstr("s000002_account_log","_");//echo $test;?>