很多人可能跟我一样,需要连接N都个数据库,进行操作, 有时候要查某个服务器下某个数据库的某张表的数据. 然后只能打开连接远程服务器, 连接远程数据库, 然后再sql语句操作. 每次都很烦,所以有空做了个 连接数据库操作的工具页面.
直接工具栏输入, 下面显示查询结果列表
前端: easyui 前端我用的是easyui的表格功能,这个做列表数据展示还不错,
后端: php 接口,
直接贴代码.
因为easyui的datagrid 表格插件, 官方没有给出 动态输出表格动态展示列的例子, 我采用的是动态获取列.
列标题 一个接口, 列数据一次接口. 我觉得两个本来就是一个查询, 所以放到了一个页面, 只做了返回值的区分, 列标题传一个head=1的参数.
JS两个ajax函数, 一个是获取列的, 下面是获取数据的, 上面获取后把列字符串给到下面的 datagrid表格控件去展示.
注意两个函数的参数都要一致,否则会出错.
看看PHP页面.
include_once 'database.php';
include_once 'function.php';
include_once 'models/ZoneClass.php';
$Zone = new ZoneClass(DATABASE_HOST,DATABASE_USER,DATABASE_PASS,DATABASE_PORT,DB_FENTIANSJ);
include_once 'models/GmCode.php';
$GMCODE = new GmCode(DATABASE_HOST,DATABASE_USER,DATABASE_PASS,DB_EXTGAME,DATABASE_PORT);
$con = mysqli_connect(DATABASE_HOST,DATABASE_USER, DATABASE_PASS, DB_ADMIN, DATABASE_PORT);
$con ? '': die('连接失败');
$head = empty($_REQUEST['head']) ? '' : $_REQUEST['head'];
$type = empty($_REQUEST['type']) ? 0:1;
$db_name = empty($_REQUEST['db_name']) ? '': urldecode($_REQUEST['db_name']);
$zoneid = empty($_REQUEST['zoneid']) ? '' : $_REQUEST['zoneid'];
$sqlstr = empty($_REQUEST['sqlstr']) ? '' : urldecode($_REQUEST['sqlstr']) ;
$rows = array();
//echo urldecode($sqlstr);die();
if($type ==0){
mysqli_set_charset($con,'utf8');
mysqli_select_db($con,$db_name) or die("mysql select db error ".mysqli_error($con));//设置或修改数据库
$result = mysqli_query($con,$sqlstr);
while ($row = mysqli_fetch_assoc($result)){
$rows[] = $row;
}
}else{
$rows = $Zone->readZoneData($zoneid,$sqlstr);
}
//var_dump($rows);
//die();
$array = array();
if (!$rows){
echo '{"error":"没有数据","rows":[]}';exit();
}
if($head == 1){//读取列
$jsons1 = '';
foreach ($rows[0] as $k=>$v){
// $jsons1 .= '{"title":"'.$k.'","field":"'.$k.'","width":"100","align":"center"},';
$jsons1[] = array(
'field' =>$k,
'title' =>$k,
'align' => 'center',
"width" => 200,
);
}
echo json_encode($jsons1);
// echo '[{"field":"id","title":"ID"},{"field":"gm_code","title":"gm"},{"field":"gm_zones","title":"gm_zones"},{"field":"action","title":"action"},{"field":"state","title":"state"},{"field":"timesss","title":"timesss"},{"field":"ctime","title":"ctime"}]';
}else{
//读取数据
echo json_encode($rows);
}
die();
这是个原生的php, 直接用mysqli连接,
前面引入的是连接数据库的公共文件.
先说说数据库情况,
default 数据库 : 默认数据库, 服务器 IP 10.10.1.1. 所以选择综合区,填写操作的数据库即可
其他区数据库(每个区的服务器都不同): 我这里在默认服务器下,有一个ZONE区数据表, 记录不同ZONE ID的 服务器IP 账号 密码 等.
所以要查询 某个区下面的数据库, 填写区ID 即可, 引入的ZoneClass是封装文件.
你们可以直接 把你们多个服务器做成一个SELECT下拉框, 一个数据库 文本框, 一个SQL语句文本框.
代码没什么好说的, 有注释, head是只取字段名, 然后把字段名转为json字符串.前端获取后展示列标题. 另外一个就是获取数据. 遵循easyui 表格的规则