网页上直接sql查询操作数据库,并在网页上展示列表数据的工具页面

您所在的位置:网站首页 全国人大提案数据库查询网站 网页上直接sql查询操作数据库,并在网页上展示列表数据的工具页面

网页上直接sql查询操作数据库,并在网页上展示列表数据的工具页面

2024-07-15 06:17| 来源: 网络整理| 查看: 265

很多人可能跟我一样,需要连接N都个数据库,进行操作, 有时候要查某个服务器下某个数据库的某张表的数据. 然后只能打开连接远程服务器, 连接远程数据库, 然后再sql语句操作. 每次都很烦,所以有空做了个 连接数据库操作的工具页面.

直接工具栏输入, 下面显示查询结果列表

前端: easyui 前端我用的是easyui的表格功能,这个做列表数据展示还不错,

后端: php 接口, 

直接贴代码. 

类型: 综合区 指定区 数据库名: 区ID: SQL语句: gift 查询 //动态展示列和数据 var datagrid_load = function () { var columns = new Array();//定义列数组 var ser = encodeURI($('form').serialize());//参数需要跟 下面保持一致 $.getJSON('sql_toolbar_port.php?head=1&'+ser, null, function (result) {//通过方法获得后台数据,该方法不唯一。 /*var column = { field: 'field', title: '不变的', width: 100, sortable: true, editor: 'textReadonly', } columns.push(column);//将固定写死的列,存入列数组中*/ for (var i = 0; i < result.length; i++) {//遍历获得的后台数据,这是需要动态显示的表头数据源 var column1 = { field: result[i].field, title: result[i].title , width: 70, sortable: true, editor: { type: 'numberbox', } }// field字段和title值都是根据后台的数据来赋值 columns.push(column1);//将需要动态显示的列,存入列数组中 } initTable(columns); }); } $(function () { }) function initTable(columns) { grid = $('#dg').datagrid({ //定位到Table标签,Table标签的ID是grid url: 'sql_toolbar_port.php', //指向后台的Action来获取当前菜单的信息的Json格式的数据 title: 'sql查询', iconCls: 'icon-view', // height: 650, // width: '100%', fit: true, idField: 'ID', toolbar: '#toolbar', method : 'post', fitColumns:false, //横向滚动条 queryParams: {zoneid:$("input[name='zoneid']").val(),type:$("select[name='type']").val(),db_name:$("input[name='db_name']").val(),sqlstr:encodeURI($("textarea[name='sqlstr']").val())}, // queryParams: $("form").serialize(), //异步查询的参数 columns: [ columns,//通过js动态生成,这是关键。 ], }); }; function select_gift() { var obj1 = $("form").serializeArray(); $.each(obj1,function (i,field) { alert(field.name + '=' + field.value); }) }

因为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 表格的规则



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3