php连接MSSQL的方法详解[转]

PHP/Mysql/Nginx Alice 来源:互联网 4年前 (2017-11-05) 880次浏览 0个评论

  MSSQL是指微软的 SQLServer 数据库服务器,它是一个数据库平台,提供数据库的从服务器到终端的完整的解决方案,其中数据库服务器部分,是一个数据库管理系统,用于建立、使用和维护数据库。SQL Server 一开始并不是微软自己研发的产品,而是当时为了要和 IBM 竞争时,与 Sybase 合作所产生的,其最早的发展者是 Sybase,同时微软也和 Sybase 合作过 SQL Server 4.2 版本的研发,微软亦将 SQL Server 4.2 移植到 Windows NT(当时为 3.1 版),在与 Sybase 终止合作关系后,自力开发出 SQL Server 6.0 版,往后的 SQL Server 即均由微软自行研发。
这篇文章主要为大家详细汇总了PHP连接 MSSQL 的实现方法,帮助大家更好的实现 PHP 与 MSSQL 的连接,感兴趣的小伙伴们可以参考一下

  为了能让 PHP 连接 MSSQL,系统需要安装 MSSQL,PHP,且在 PHP.ini 中的配置中,将 ;extension=php_mssql.dll 前面的;去掉

1.连接 MSSQL

$conn=mssql_connect("实例名或者服务器 IP","用户名","密码");
 
//测试连接
if($conn)
{
echo "连接成功";
}

2.选择要连接的数据库

mssql_select_db("dbname");

3.执行查询

$rs = mssql_query("select top 1 id,username from tbname",$conn);
// 或者直接执行 update,insert 等语句,可以不用为返回结果赋值
mssql_query("update tbname set username='niunv' where id=1");

4.获取记录集行数

echo mssql_num_rows($rs);

5.获取记录集

if($row=mssql_fetch_array($rs))
 {
 $id = $row[0];//获取 ID 字段值
 $username = $row[1];//获取 username 字段值
 }

6.获取新增记录的 ID
将 id 字段设置为 IDENTITY 字段,执行 insert 语句以后,就会产生一个 @@IDENTITY 全局变量值,查询出来就是最后一条新增记录的 ID 了.

mssql_query("insert into tbname(username) values ('nv')",$conn);
$rs = mssql_query("select @@IDENTITY as id",$conn);
if($row=mssql_fetch_array($rs))
{
echo $row[0];
}

7.释放记录集

mssql_free_result($rs);

8.关闭连接

mssql_close($conn);

注:用 PHP 操作 MSSQL 比在 ASP 连接 MYSQL 要简单,所以,当需要 MSSQL 与 MYSQL 并存时,用 PHP 连接 MSSQL 来操作 MYSQL 与 MSSQL 并存比较简单好用.如果是 ASP 连接 MYSQL,需要安装一个 MYSQL 驱动,默认 windows 的 ODBC 没有安装,很遗憾…

在 web 服务器上至少安装了 mssql 的客户端

打开 php.ini 把;extension=php_mssql.dll 前面的分号去掉

有必要话:需要制定 extension_dir

推荐使用 php<=4.0.9 <=5.0.3 目前 我还没有连接成功过 4.010 和 5.0.3 数据库的 连接分页可以到 phpe.net 上获取到相应的 class 下面是我修改的 一个 class

<?php
/**
*mssql 数据库连接类
**/
class SQL{
 
var $server;
var $userName;
var $passWord;
var $dataBase;
 
var $linkID = 0;
var $queryResult;
var $lastInsertID;
 
var $pageNum = 0;//分页用—共有几条数据
var $ER;
 
/**
*构造函数
**/
function  SQL($Server='',$UserName='',$PassWord='',$DataBase=''){
$this->server = $Server;
$this->userName = $UserName;
$this->passWord = $PassWord;
$this->dataBase = $DataBase;
}
/**
*数据库连接
**/
function db_connect(){
$this->linkID = mssql_pconnect($this->server,$this->userName,$this->passWord);
if(!$this->linkID){
$this->ER = "db_connect($this->server,$this->userName,$this->passWord) error";
return 0;
}
if (!mssql_select_db($this->dataBase,$this->linkID)) {
$this->ER = "mssql_select_db($this->dataBase,$this->lastInsertID) error";
return 0;
}
return $this->linkID;
}
 
/**public
*  function: Check the database, if exist then select
*  exist: return 1
*  not exist: return 0
*/
function selectDatabase(){
if(mssql_select_db($this->dataBase))
return 1;
else
return 0;
}
 
/**
*数据操作
**/
function  query($Str){
if ($this->linkID == 0) {
$this->ER = "数据库还没有连接!!";
}
 
   $this->queryResult = mssql_query($Str); 
//$this->queryResult = mssql_query($Str,$this->linkID);
if (!$this->queryResult) {
  
 
$this->ER = "$Str.没有操作成功,query error!!";
return 0;//****************对于 php 4.3.9 以上版本的错误用 1
}
return $this->queryResult;
}
 
/**
*数据获取
**/
function fetch_array($result){
if($result != "") $this->queryResult = $result;
$rec =mssql_fetch_array($this->queryResult);
 
if(is_array($rec)){
return $rec;
 
}
 
//$this->ER = "没有获取数据!";
return 0;
}
 
/**public
*  function: Free the Query Result
*  success return 1
*  failed: return 0
*/
function freeResult($result=""){
if($result != "") $this->queryResult = $result;
return mssql_free_result($this->queryResult);
}
   
/**
*获取影响的的行数
*获取操作过的行数
**/
function num_rows($result=""){
if ($result != "") {
$this->queryResult = $result;
$row = mssql_num_rows($this->queryResult);
return $row;
}
}
   
/**
*获取查询结果—多个
**/
function result_ar($str=''){
if (empty($str)) {
return 0;
}
$back = array();
$this->queryResult = $this->query($str);
 
while ($row = $this->fetch_array($this->queryResult)) {
$back[] = $row;
}
return $back;
}
 
/**
*数据库信息分页
*$Result 数据库操作
*str ==sql 语句 
*page ==第几页
*showNum ==显示几页
*/
function page($Str,$Page=0,$ShowNum=5){
$back = array();//返回数据
$maxNum = 0;
if ($Str == "") {
$this->ER = "没有数据";
return  0;
}
$this->queryResult = $this->query($Str);
if($this->queryResult){
if($Page==""){
$nopa=0;
}else{
$nopa = ($Page-1)*$ShowNum;
if ($nopa<0) {
$nopa = 0;
}
}
$maxNum=$this->num_rows($this->queryResult);
$k=0;
$i=0;
$dd=$this->fetch_array($this->queryResult);
 
while($dd&&$nopa<=$maxNum&&$i<$ShowNum){
if($nopa >= $maxNum)  $nopa = $maxNum;
mssql_data_seek($this->queryResult,$nopa);
 
$row=$this->fetch_array($this->queryResult);
 
$nopa++;
$i++;
$back[] = $row;
 
if ($nopa >=$maxNum) {
break;
}
}
}
$this->pageNum = $maxNum;
return $back;
}
 
/**
*分页的 html 页码
*/
function  page_html($DataNum=0,$Page=1,$ShowNum=3,$web,$Post=''){
if ($DataNum == 0) {
$back =  "没有要查询的数据";
}else {
if ($ShowNum<=0) {
$ShowNum = 3;
}
if ($Page<=0) {
$Page = 1;
}
if (empty($web)) {
$web = "#";
}
$pageNum = ceil($DataNum/$ShowNum);
if ($Page <= 1) {
$top =  "首页<<";
}else {
$top = "<a href='".$web."?page=0&".$Post."' target='_self'>首页<< </a>";
}
if ($Page !==1) {
$upPage =  "<a href='".$web."?page=".($Page-1)."&".$Post."' target='_self'>上一页</a>";
}else {
$upPage = "上一页";
}
if ($Page < $pageNum) {
$downPage = "<a href='".$web."?page=".($Page+1)."&".$Post."' target='_self'>下一页</a>";
}else {
$downPage = "下一页";
}
if ($Page == $pageNum) {
$foot = ">>尾页";
}else {
$foot = "<a href='".$web."?page=".$pageNum."&".$Post."' target='_self'> >>尾页</a>";
}
 
$back = <<<EOT
 
共 $pageNum 页   
第 $Page/$pageNum 页 $top   $upPage   $downPage    $foot
EOT;
}
return $back;
}
}//end class
?>

女程序员博客 , 版权所有丨本站采用BY-NC-SA协议进行授权 , 转载请注明php 连接 MSSQL 的方法详解[转]

【声明】:本博客仅为分享信息,不参与任何交易,也非中介,所有内容仅代表个人观点,均不作直接、间接、法定、约定的保证,读者购买风险自担。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。

【关于安全】:任何 IDC 都有倒闭和跑路的可能,备份永远是最佳选择,服务器也是机器,不勤备份是对自己极不负责的表现,请保持良好的备份习惯。

喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址