背景
在某些情况下,比如业务重构时,需要对涉及到某字段的代码进行修改,则需要获取到某数据库中所有含有该字段的数据表.
代码
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"}