获取某数据库中含有某字段的所有表的脚本

背景

在某些情况下,比如业务重构时,需要对涉及到某字段的代码进行修改,则需要获取到某数据库中所有含有该字段的数据表.

代码

<?php

$dbhost = 'ip';
$dbusername = 'username';
$dbpass = 'password';
$dbname = 'databasename';

$db_connect = new mysqli($dbhost, $dbusername, $dbpass, $dbname);

// 获取数据库中各个表的基础信息
$sql = 'SELECT TABLE_SCHEMA,TABLE_NAME FROM information_schema.`TABLES` WHERE TABLE_SCHEMA="'.$dbname.'"';

$result = $db_connect->query($sql);

while ($row = mysqli_fetch_assoc($result)) {
	$tables[] = $row;
}

//取出所有表的名称
$tables = array_column($tables, 'TABLE_NAME');

//要查询的字段名
$name = 'abc';
//含有该字段名的表名称数组
$needs = array();
// 对各个表做遍历,获取含有该字段的表名称
foreach ($tables as $table) {
    $sql = 'select '.$name.' from '.$table;
    if ($result = $db_connect->query($sql)) {
    	$needs[] = $table;
    }
}

return $needs;

测试

以某数据库和某字段为样例进行测试,返回结果如下

/opt/wwwroot/test/dbcolume.php:34:
array(32) {
  [0] =>
  string(20) "account_organization"
  [1] =>
  string(21) "app_recruit_interview"
  [2] =>
  string(26) "campus_recruit_interviewer"
  [3] =>
  string(18) "campus_recruit_log"
  [4] =>
  string(35) "campus_recruit_site_address_element"
  [5] =>
  string(33) "campus_recruit_site_group_element"
  [6] =>
  string(24) "campus_recruit_site_plan"
  [7] =>
  string(32) "campus_recruit_site_time_element"
  [8] =>
  string(8) "employee"
  [9] =>
  string(34) "interviewer_remark_template_config"
  [10] =>
  string(18) "operation_integral"
  [11] =>
  string(17) "position_projects"
  [12] =>
  string(11) "preemployee"
  [13] =>
  string(7) "recruit"
  [14] =>
  string(19) "recruit_config_lock"
  [15] =>
  string(17) "recruit_interview"
  [16] =>
  string(25) "recruit_interview_history"
  [17] =>
  string(24) "recruit_interview_status"
  [18] =>
  string(12) "recruit_lock"
  [19] =>
  string(13) "recruit_offer"
  [20] =>
  string(15) "recruit_process"
  [21] =>
  string(21) "recruit_process_alias"
  [22] =>
  string(14) "recruit_rounds"
  [23] =>
  string(16) "recruitflow_step"
  [24] =>
  string(24) "recruitflow_step_history"
  [25] =>
  string(23) "resume_background_check"
  [26] =>
  string(23) "resume_candidate_upload"
  [27] =>
  string(13) "resume_hiring"
  [28] =>
  string(25) "resume_remuneration_proof"
  [29] =>
  string(10) "statistics"
  [30] =>
  string(19) "statistics_archives"
  [31] =>
  string(12) "vanke_reward"
}

转载于:https://my.oschina.net/u/3412738/blog/1548751

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值