需求:在数据库处理时,因为不同的库相同的表进而数据冲突,需要修改某个表里的主键,而这个主键会关联到其他表,因此需要同时修改包含此主键的表。
怎么查找整个数据库里包含这个主键的表呢?发现并没有直接的方法来实现。需要分步进行:
1、以mysql_list_tables()函数直接获得整个数据库的表;
2、通过mysql_fetch_row()获取表名;
3、使用foreach循环遍历获取各个表的字段并用in_array()判断是否包含某个字段,如否,将该表置空;
4、再将空值进行过滤即可。
public function tables()
{
$rs = mysql_list_tables($db);
$tables =array();
while ($row = mysql_fetch_row($rs)) {
$tables[] =$row[0];
}
mysql_free_result($rs);
foreach ($tables as &$v) {
$fields =D($v)->getDbFields(); // 这个是thinkphp的方法
if(!in_array('uid',$fields)){
$v ='';
}
}
$tables = array_filter($tables);
$tables = array_values($tables);
return $tables;
}