PHP(8):php获取MS SQL Server 2014数据库的记录数据

  为了将C/S写的程序(Powerbuilder 6.5+MS SQL Server2000)换成网页版,打算使用PHP 7.4 + MS SQL Server 2014 +Apache 2.4 + LayUI来写。

  安装服务器、安装数据库、迁移数据库花费了一些时间,本来想用MS SQL Server里面的备份与还原来做(以前我都是这么做的),担心版本变化大没有采用,使用Powerbuilder里面的数据管道来做,结果二进制数据没有保留,后面还是个麻烦事情。

  大体数据迁移完了,进入写程序,结果连接数据库花费了好长时间,最后才知道在Win10企业版上的Apache+PHP需要安装ODBC数据库引擎,安装了ODBC11后就可以连接了。

  这个过程我更新了《PHP(2):PHP读取MS Sql Server 2014数据库数据》以便以后遇到问题再来看,有记录可以帮助自己也可以帮助别人少踩坑。

  又遇到乱码问题,又折腾了好长时间才搞定。

  终于正常了,先将常用操作练习一遍,为后面做准备。

  1、获取数据表的记录总数

<?php
    header('Content-Type: text/html; charset=utf-8');
    //使用pdo连接数据库:
    $conn = new PDO( "sqlsrv:Server=服务器地址;Database=数据库名称", '用户名', '密码' );
    $conn->exec('set names utf8');
    //得到数据表的总数
    $sql="SELECT count(*) FROM htuser";
    $result=$conn->query($sql);
    $rows = $result->fetch();
    $rowCount = $rows[0];
    echo '记录总数:'.$rowCount;
?>
<?php
    header('Content-Type: text/html; charset=utf-8');
    //使用pdo连接数据库:
    $conn = new PDO( "sqlsrv:Server=服务器地址;Database=数据库名称", '用户名', '密码' );
    $conn->exec('set names utf8');
    //得到数据表的总数
    $sql="SELECT * FROM htuser";
    //查询数据库的数据并返回结果集(预处理对象):
    $result=$conn->query($sql);
    $rows=$result->fetchAll(PDO::FETCH_ASSOC);
    echo '记录总数:'.sizeof($rows);//返回记录总数
    //echo '记录总数:'.count($rows);//这个也正确返回记录总数
?>

  2、获取数据库查询表的记录并返回JSON格式

<?php
    header('Content-Type: text/html; charset=utf-8');
    //使用pdo连接数据库:
    $conn = new PDO( "sqlsrv:Server=服务器地址;Database=数据库名称", '用户', '密码' );
    $conn->exec('set names utf8');
    //得到数据表的总数
    $sql="SELECT * FROM htuser";
    //查询数据库的数据并返回结果集(预处理对象):
    $result=$conn->query($sql);
    $rows=$result->fetchAll();
    print_r($rows,false);//输出全部的数组内容
?>
<?php
    header('Content-Type: text/html; charset=utf-8');
    //使用pdo连接数据库:
    $conn = new PDO( "sqlsrv:Server=服务器地址;Database=数据库名称", '用户名', '密码' );
    $conn->exec('set names utf8');
    //得到数据表的总数
    $sql="SELECT * FROM htuser";
    //查询数据库的数据并返回结果集(预处理对象):
    $result=$conn->query($sql);
    $rows=$result->fetchAll(PDO::FETCH_ASSOC);
    echo json_encode($rows,JSON_UNESCAPED_UNICODE);
?>

  echo json_encode($rows,JSON_UNESCAPED_UNICODE);
  这里如果不加JSON_UNESCAPED_UNICODE,即使写了$conn->exec('set names utf8');返回的也会是乱码,一定要加上。

  3、获取数据表分页记录数据并返回JSON格式 ( 以LayUI的分页数据为例 )

<?php
    //获取具体的页数
    $viewPage = isset($_POST['page']) ? intval($_POST['page']):1;
    //获取每页的行数
    $viewRows = isset($_POST['rows']) ? intval($_POST['rows']):10;
    $offset = ($viewPage-1) * $viewRows;
    $returnArr=array();

    //使用pdo连接数据库:
    $conn = new PDO( "sqlsrv:Server=服务器地址;Database=数据库名称", '用户名', '密码' );
    //pdo设置客户端字符集:
    $conn->exec('set names utf8');
    $sql="SELECT count(*) FROM htuser";
    $result=$conn->query($sql);
    $rows = $result->fetch();
    $rowCount = $rows[0];

    $returnArr['total']=$rowCount;
    //准备返回的数据记录
    $sql="SELECT TOP $viewRows * FROM htuser WHERE c01 NOT IN ( SELECT TOP $offset c01 FROM     htuser ORDER BY c01 ) ORDER BY c01";
    $result=$conn->query($sql);
    $rows=$result->fetchAll(PDO::FETCH_ASSOC);
    $returnArr['rows']=$rows;
    echo json_encode($returnArr,JSON_UNESCAPED_UNICODE);
?>

  4、游标问题

  习惯了使用游标操作数据,所以想找PHP使用游标的资料,可是找了半天时间,也没有在发现。类似游标的替代:

<?php
require 'ZTBLinkConfig.php';//加载数据库
$sql="select c01,c07 from htuser";
$res=$ZTBConn->prepare($sql);//准备查询语句
$res->execute();//执行
while( $result=$res->fetch(PDO::FETCH_ASSOC) ){
	echo $result['c01']."  ".$result['c07'].'<br>';
}
?>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值