PHP:PHP读取MS Sql Server 2014数据库数据

Posted dawn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP:PHP读取MS Sql Server 2014数据库数据相关的知识,希望对你有一定的参考价值。

  前面使用VBS将Excel数据写入到了Ms Sql Server 2014的数据库,现在要将记录显示出来,本来打算用IIS+ASP.net,可是9月份安装好Apache+php后一直没有写过PHP代码,还是要学一学PHP ,很多人说PHP是最好的编程语言,还是要体会一下。

  本来想着很简单的事情,没有想到又是不停地踩坑!

  先是在网上搜索了PHP读Ms Sql Server数据库的代码,照着样子写,结果总是报错,查原因,原来是PHP对读写Ms Sql Server数据库的支持文件有要求,我使用的是PHP 7.4,按照网上说的反复试,折腾了4个小时,最终报告了下面的错误:

   心气烦躁是折腾不好的,上面已经看到了曙光,必须冷静下来,查了资料,支持库有线程安全和不安全之分,还有PDO和非PDO之分,应该分别试,先用phpinfo()查看7.4的库情况,就使用PDO,加上下面的指令到php.ini中:

  extension=G:\\php74\\ext\\php_pdo_sqlsrv_74_ts_x64.dll

  重启Apache,好了,读出数据来了!

  开始做前端显示页面,一个月前看过easyUI的资料,比较简单,看资料写代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>网络设备信息</title>
    <link rel="stylesheet" type="text/css" href="themes/default.css"/>
    <link rel="stylesheet" type="text/css" href="themes/default/easyui.css">
    <link rel="stylesheet" type="text/css" href="themes/icon.css">
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/jquery.easyui.min.js"></script>
</head>
<body>
    <div id="dataGridToolBar">
        <a href="#">添加</a>
        <input type="text" name="searchIp" id="searchIp" placeholder="请输入IP地址进行查找">
    </div>
    <table id="dataGridNetInfo">
        <thead>
            <tr>
                <th data-options="field:'C01',width:100,sortable:true">IP地址</th>>
                <th data-options="field:'C02',width:140">MAC地址</th>>
                <th data-options="field:'C03',width:100">网关地址</th>>
                <th data-options="field:'C04',width:100">子网掩码</th>>
                <th data-options="field:'C05',width:90">主DNS</th>>
                <th data-options="field:'C06',width:90">备DNS</th>>
                <th data-options="field:'C07',width:120,formatter:operatingSystem">操作系统</th>>
                <th data-options="field:'C08',width:80,sortable:true">内存大小</th>>
                <th data-options="field:'C09',width:80,sortable:true">硬盘大小</th>>
                <th data-options="field:'C10',width:180">硬盘系列号</th>>
                <th data-options="field:'C11',width:100">CPU</th>>
                <th data-options="field:'C12',width:80">使用人</th>>
                <th data-options="field:'C13',width:100">联系电话</th>>
                <th data-options="field:'C14',width:120">设备名称</th>>
                <th data-options="field:'C15',width:150">地点</th>>
                <th data-options="field:'C16',width:180,hidden:true">录入时间</th>>
                <th data-options="field:'other',width:180,formatter:operateButton">操作</th>>
            </tr>
        </thead>
    </table>

    <script>
        $("#dataGridNetInfo").datagrid({
            title:"网络设备表",
            iconCls:"icon-save",
            height:800,
            url:'GetInfoFromMsSqlServer.php',//加载数据URL
            toolbar:"#dataGridToolBar",
            rownumbers:true,//加入行号
            checkOnSelect:true,
            fitColumns:false,//列宽自适应
            striped:true,//斑马线
            //datagrid数据加载完毕之后执行的代码
            onLoadSuccess:function () {
                $(".opAdd").linkbutton({
                    iconCls:"icon-cancel",
                });
                $(".opUpdate").linkbutton({
                    iconCls:"icon-edit",
                });
            },
            pagination:true,
        });
    $("#dataGridToolBar>a:contains(删除)").linkbutton({
        iconCls:"icon-remove",
    });
    $("#dataGridToolBar>a:contains(添加)").linkbutton({
        iconCls:"icon-add",
    });
    $("#searchIp").textbox({
        width:220,
        buttonIcon:"icon-search",
        buttonText:"搜索",
    });
    //格式化字符串函数
    function operatingSystem(value,row,index) {
        var sReturn="other";
        if(value.indexOf('Windows 7')!=-1){
            if(value.indexOf('32-bit')>0){
                sReturn='Windows 7 32位';
            };
            if(value.indexOf('64-bit')>0){
                sReturn='Windows 7 64位';
            };
        };
        if(value.indexOf('Windows 10')!=-1){
            if(value.indexOf('32-bit')>0){
                sReturn='Windows 10 32位';
            };
            if(value.indexOf('64-bit')>0){
                sReturn='Windows 10 64位';
            };
        };
        if(value.indexOf('Windows XP')!=-1){
            sReturn='Windows XP';
        };

        return sReturn;
    };

    function operateButton(value,row,index) {
        return ' <a class="opAdd" ehref="#">删除</a> <a class="opUpdate" href="#">修改</a>'
    }
    </script>
</body>
</html>

  然后就是用php的编写后台代码文件,继续踩坑:

<?php
//获取具体的页数
$viewPage = isset($_POST['page']) ? intval($_POST['page']):1;
//获取每页的行数
$viewRows = isset($_POST['rows']) ? intval($_POST['rows']):10;
$offset = ($viewPage-1) * $viewRows;
$returnArr=array();
//使用pdo连接数据库:
$db = new PDO( "sqlsrv:Server=IP地址;Database=数据库名称", '用户名', '用户密码' );
//pdo设置客户端字符集:
$db->exec('set names utf8');
//得到数据表的总数
$sql="SELECT * FROM VRVEquipmentRecord";
//查询数据库的数据并返回结果集(预处理对象):
$result=$db->query($sql);
$rows=$result->fetchAll(PDO::FETCH_ASSOC);
$returnArr['total']=sizeof($rows);
//准备返回的数据记录
$sql="SELECT TOP $viewRows * FROM VRVEquipmentRecord WHERE c02 NOT IN ( SELECT TOP $offset c02 FROM VRVEquipmentRecord ORDER BY c02 ) ORDER BY c02";
$result=$db->query($sql);
$rows=$result->fetchAll(PDO::FETCH_ASSOC);
$returnArr['rows']=$rows;
echo json_encode($returnArr);
?>

  显示结果:

   折腾了一整天,终于搞定了。

以上是关于PHP:PHP读取MS Sql Server 2014数据库数据的主要内容,如果未能解决你的问题,请参考以下文章

PHP + MS SQL Server 字符编码

具有集成安全 PHP 和 MS SQL Server 的 ODBC 连接

检索插入记录的 ID:Php & MS SQL SERVER

MS SQL SERVER、PHP、PDO、ODBC:用户登录失败

SQLSRV 驱动程序与带有 MS SQL Server 的 PHP 的 PDO 驱动程序

linux系统可以使用哪些.so文件对应windows中的.dll文件来连接php到ms sql server