Web展示MySQL库表结构和字段定义的PHP小脚本
MySQL数据库的库表结构和字段定义等元数据可以很方便地在`information_schema`系统库中查询到,但工作中一些非数据库岗位的同学很多都不了解这一点,经常会碰到过来询问某某数据存在哪张表的情况。如果能把数据库的表框架信息比较直观地展示出来,那就既方便了其他同学查询,也减轻了一些额外的“非战斗性”工作量。所以,就想着写一个Web页面吧,上网查了查资料,用PHP写了一个个人称作“Tableviewer”的小展示程序。
以下是相关的各个文件。
①config.php
$value) {$url .= '&' .$key. '=' .$value;
}
$showrow = 10;?>
②query.php
0QUERY;?>
③page.php
myde_total = $this->numeric($myde_total);$this->myde_size = $this->numeric($myde_size);$this->myde_page = $this->numeric($myde_page);$this->myde_page_count = ceil($this->myde_total / $this->myde_size);$this->myde_url = $myde_url;if ($this->myde_total < 0)$this->myde_total = 0;if ($this->myde_page < 1)$this->myde_page = 1;if ($this->myde_page_count < 1)$this->myde_page_count = 1;if ($this->myde_page > $this->myde_page_count)$this->myde_page = $this->myde_page_count;$this->limit = ($this->myde_page - 1) * $this->myde_size;$this->myde_i = $this->myde_page - $show_pages;$this->myde_en = $this->myde_page + $show_pages;if ($this->myde_i < 1) {$this->myde_en = $this->myde_en + (1 - $this->myde_i);$this->myde_i = 1;}if ($this->myde_en > $this->myde_page_count) {$this->myde_i = $this->myde_i - ($this->myde_en - $this->myde_page_count);$this->myde_en = $this->myde_page_count;}if ($this->myde_i < 1)$this->myde_i = 1;}/* digit diagnose */private function numeric($num) {if (strlen($num)) {if (!preg_match("/^[0-9]+$/", $num)) {$num = 1;} else {$num = substr($num, 0, 11);}} else {$num = 1;}return $num;}/* address replace */private function page_replace($page) {return str_replace("{page}", $page, $this->myde_url);}/* head page */private function myde_home() {if ($this->myde_page != 1) {return "page_replace(1) . "' title='Head'>Head";} else {return "Head
";}}/* last page */private function myde_prev() {if ($this->myde_page != 1) {return "page_replace($this->myde_page - 1) . "' title='last'>last";} else {return "last
";}}/* next page */private function myde_next() {if ($this->myde_page != $this->myde_page_count) {return "page_replace($this->myde_page + 1) . "' title='next'>next";} else {return"next
";}}/* tail page */private function myde_last() {if ($this->myde_page != $this->myde_page_count) {return "page_replace($this->myde_page_count) . "' title='Tail'>Tail";} else {return "Tail
";}}/* out print */public function myde_write($id = 'page') {$str = "";$str.=$this->myde_home();$str.=$this->myde_prev();if ($this->myde_i > 1) {$str.="...
";}for ($i = $this->myde_i; $i <= $this->myde_en; $i++) {if ($i == $this->myde_page) {$str.="page_replace($i) . "' title='The " . $i . " Page' class='cur'>$i";} else {$str.="page_replace($i) . "' title='The " . $i . " Page'>$i";}}if ($this->myde_en < $this->myde_page_count) {$str.="...
";}$str.=$this->myde_next();$str.=$this->myde_last();$str.="Total " . $this->myde_page_count ." Page " . $this->myde_total . " Data
";$str.="";return $str;}}?>
④index.css
/** create_author : 蛙鳜鸡鹳狸猿* create_time : 2018-11-21* program : *_* css decoration *_*
*/*{margin:0;padding:0;
}
.container{width: 100%;font-size: 14px;color: #000;
}/* head */
.container>.header{width: 100%;height: 64px;line-height: 64px;font-size: 24px;font-weight:bold;padding-left: 20px;
}
.container>.title>h2{width:100%;height: 40px;line-height: 40px;font-size: 14px;font-weight: bold;padding-left: 20px;
}/* form */
.search{width: 100%;height: 52px;line-height: 52px;font-size: 16px;font-weight: bold;padding-left: 20px;
}
.search>form>input{width: 270px;height: 30px;border-radius: 5px;outline: none;
}
.search>form>button{width: 60px;height: 33px;border-radius: 5px;line-height: 30px;position: relative;top: 2px;outline: none;
}/* table */
.gridtable{width: 200%;margin-top: 20px;
}
.gridtable>thead>tr>th{min-width: 90px;text-align: center;
}
.gridtable>tbody>tr>td{min-width: 90px;text-align: center;
}p{margin:0}
#page{height:40px;padding:20px 0px;
}
#page a{display:block;float:left;margin-right:10px;padding:2px 12px;height:24px;border:1px #cccccc solid;background:#fff;text-decoration:none;color:#808080;font-size:12px;line-height:24px;
}
#page a:hover{color:#077ee3;border:1px #077ee3 solid;
}
#page a.cur{border:none;background:#077ee3;color:#fff;
}
#page p{float:left;padding:2px 12px;font-size:12px;height:24px;line-height:24px;color:#bbb;border:1px #ccc solid;background:#fcfcfc;margin-right:8px;}
#page p.pageRemark{border-style:none;background:none;margin-right:0px;padding:4px 0px;color:#666;
}
#page p.pageRemark b{color:black;
}
#page p.pageEllipsis{border-style:none;background:none;padding:4px 0px;color:#808080;
}
⑤index.php
Welcome Tableviewer... Tableviewer Service
table table_schema table_comment table_column
ceil($total / $showrow)){$curpage = ceil($total / $showrow);} //binding last paginationif ($total > $showrow) {$page = new page($total, $showrow, $curpage, $url, 2);echo $page->myde_write();} //starting first pagination?>Powered by Bilery Zoo https://github.com/Bilery-Zoo
该程序主要具有以下特性或者说设定吧:
- 数据取自MySQL系统库`information_schema`,每次查询都是实时数据,不存在数据层面的延迟和不准确;
- 每个栏目列都添加了筛选框,方便快速查询;
- 筛选框既支持单个栏目查询,也支持多个框任意组合查询;
- 筛选框的后台是纯SQL语句,并且使用REGEXP正则表达式命令匹配,查询功能更加强大;
- 具体的数据行以MySQL表为维度,一张表一条数据,更加查阅友好化。
我个人是部署在本地的Ubuntu Linux虚拟机里的,下载安装了最新版的xampp-linux-x64-7.2.11-0,默认会安装到/opt/lampp,然后把以上文件放入该目录下的“htdocs”文件夹(需要替换或者备份替换一下同名文件),开启Apache服务,打开浏览器就OK了。因为自己一直做运维相关工作,根本没有多少Web相关的知识,在写脚本时查了很多资料,也让我程序媛的妹妹帮忙改了改(至少那个“index.css”文件是她写的),其中主要参考的文章如下。
https://blog.csdn.net/haibo0668/article/details/52448374
http://blog.51cto.com/babyhe/1118372
http://www.php.cn/css-tutorial-375461.html
https://blog.csdn.net/qq_36370731/article/details/78069056
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
