您现在的位置: 365建站网 > 365文章 > PHP连接MSSQL数据库方法

PHP连接MSSQL数据库方法

文章来源:365jz.com     点击数:304    更新时间:2017-08-10 15:29   参与评论

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

1.连接MSSQL

</>code

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

2.选择要连接的数据库      

</>code

  1. mssql_select_db("dbname");

3.执行查询

</>code

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

 4.获取记录集行数      

</>code

  1. echo mssql_num_rows($rs);

5.获取记录集     

</>code

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

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

</>code

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

7.释放记录集    

</>code

  1. mssql_free_result($rs);

 8.关闭连接    

</>code

  1. 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   

</>code

  1. <?php
  2. /**
  3. *mssql 数据库连接类
  4. **/
  5. class SQL{
  6. var $server;
  7. var $userName;
  8. var $passWord;
  9. var $dataBase;
  10. var $linkID = 0;
  11. var $queryResult;
  12. var $lastInsertID;
  13. var $pageNum = 0;//分页用---共有几条数据
  14. var $ER;
  15. /**
  16. *构造函数
  17. **/
  18. function SQL($Server='',$UserName='',$PassWord='',$DataBase=''){
  19. $this->server = $Server;
  20. $this->userName = $UserName;
  21. $this->passWord = $PassWord;
  22. $this->dataBase = $DataBase;
  23. }
  24. /**
  25. *数据库连接
  26. **/
  27. function db_connect(){
  28. $this->linkID = mssql_pconnect($this->server,$this->userName,$this->passWord);
  29. if(!$this->linkID){
  30. $this->ER = "db_connect($this->server,$this->userName,$this->passWord) error";
  31. return 0;
  32. }
  33. if (!mssql_select_db($this->dataBase,$this->linkID)) {
  34. $this->ER = "mssql_select_db($this->dataBase,$this->lastInsertID) error";
  35. return 0;
  36. }
  37. return $this->linkID;
  38. }
  39. /**public
  40. * function: Check the database, if exist then select
  41. * exist: return 1
  42. * not exist: return 0
  43. */
  44. function selectDatabase(){
  45. if(mssql_select_db($this->dataBase))
  46. return 1;
  47. else
  48. return 0;
  49. }
  50. /**
  51. *数据操作
  52. **/
  53. function query($Str){
  54. if ($this->linkID == 0) {
  55. $this->ER = "数据库还没有连接!!";
  56. }
  57. $this->queryResult = mssql_query($Str);
  58. //$this->queryResult = mssql_query($Str,$this->linkID);
  59. if (!$this->queryResult) {
  60. $this->ER = "$Str.没有操作成功,query error!!";
  61. return 0;//****************对于php 4.3.9以上版本的错误用1
  62. }
  63. return $this->queryResult;
  64. }
  65. /**
  66. *数据获取
  67. **/
  68. function fetch_array($result){
  69. if($result != "") $this->queryResult = $result;
  70. $rec =mssql_fetch_array($this->queryResult);
  71. if(is_array($rec)){
  72. return $rec;
  73. }
  74. //$this->ER = "没有获取数据!";
  75. return 0;
  76. }
  77. /**public
  78. * function: Free the Query Result
  79. * success return 1
  80. * failed: return 0
  81. */
  82. function freeResult($result=""){
  83. if($result != "") $this->queryResult = $result;
  84. return mssql_free_result($this->queryResult);
  85. }
  86. /**
  87. *获取影响的的行数
  88. *获取操作过的行数
  89. **/
  90. function num_rows($result=""){
  91. if ($result != "") {
  92. $this->queryResult = $result;
  93. $row = mssql_num_rows($this->queryResult);
  94. return $row;
  95. }
  96. }
  97. /**
  98. *获取查询结果---多个
  99. **/
  100. function result_ar($str=''){
  101. if (empty($str)) {
  102. return 0;
  103. }
  104. $back = array();
  105. $this->queryResult = $this->query($str);
  106. while ($row = $this->fetch_array($this->queryResult)) {
  107. $back[] = $row;
  108. }
  109. return $back;
  110. }
  111. /**
  112. *数据库信息分页
  113. *$Result 数据库操作
  114. *str ==sql语句
  115. *page ==第几页
  116. *showNum ==显示几页
  117. */
  118. function page($Str,$Page=0,$ShowNum=5){
  119. $back = array();//返回数据
  120. $maxNum = 0;
  121. if ($Str == "") {
  122. $this->ER = "没有数据";
  123. return 0;
  124. }
  125. $this->queryResult = $this->query($Str);
  126. if($this->queryResult){
  127. if($Page==""){
  128. $nopa=0;
  129. }else{
  130. $nopa = ($Page-1)*$ShowNum;
  131. if ($nopa<0) {
  132. $nopa = 0;
  133. }
  134. }
  135. $maxNum=$this->num_rows($this->queryResult);
  136. $k=0;
  137. $i=0;
  138. $dd=$this->fetch_array($this->queryResult);
  139. while($dd&&$nopa<=$maxNum&&$i<$ShowNum){
  140. if($nopa >= $maxNum) $nopa = $maxNum;
  141. mssql_data_seek($this->queryResult,$nopa);
  142. $row=$this->fetch_array($this->queryResult);
  143. $nopa++;
  144. $i++;
  145. $back[] = $row;
  146. if ($nopa >=$maxNum) {
  147. break;
  148. }
  149. }
  150. }
  151. $this->pageNum = $maxNum;
  152. return $back;
  153. }
  154. /**
  155. *分页的html页码
  156. */
  157. function page_html($DataNum=0,$Page=1,$ShowNum=3,$web,$Post=''){
  158. if ($DataNum == 0) {
  159. $back = "没有要查询的数据";
  160. }else {
  161. if ($ShowNum<=0) {
  162. $ShowNum = 3;
  163. }
  164. if ($Page<=0) {
  165. $Page = 1;
  166. }
  167. if (empty($web)) {
  168. $web = "#";
  169. }
  170. $pageNum = ceil($DataNum/$ShowNum);
  171. if ($Page <= 1) {
  172. $top = "首页<<";
  173. }else {
  174. $top = "<a href='".$web."?page=0&".$Post."' target='_self'>首页<< </a>";
  175. }
  176. if ($Page !==1) {
  177. $upPage = "<a href='".$web."?page=".($Page-1)."&".$Post."' target='_self'>上一页</a>";
  178. }else {
  179. $upPage = "上一页";
  180. }
  181. if ($Page < $pageNum) {
  182. $downPage = "<a href='".$web."?page=".($Page+1)."&".$Post."' target='_self'>下一页</a>";
  183. }else {
  184. $downPage = "下一页";
  185. }
  186. if ($Page == $pageNum) {
  187. $foot = ">>尾页";
  188. }else {
  189. $foot = "<a href='".$web."?page=".$pageNum."&".$Post."' target='_self'> >>尾页</a>";
  190. }
  191. $back = <<<EOT
  192. 共 $pageNum 页   
  193. 第 $Page/$pageNum 页 $top   $upPage   $downPage   $foot
  194. EOT;
  195. }
  196. return $back;
  197. }
  198. }//end class
  199. ?>

以上就是PHP连接MSSQL方法的总结,希望对大家的学习有所帮助。

php 连接 mssql 常见的所有问题
 

1报错:
Fatal error: Call to undefined function mssql_connect()
解决:
使用MSSQL_系列函数 
要使用这两种都需要在php.ini进行设定: 
(1)允许 DCOM,需要将php.ini中的 ;com.allow_dcom=TRUE前的分号";"去掉。 
  (2)使用MSSQL扩展,需要php.ini中的 ;extension=php_mssql.dll前的分号";"去掉。(关键) 
(3)确认extension_dir为正确路径,以本机为例:extension_dir = "c:\AppServ\php5\ext"。 
(4)如果仍然机器报错说找不到c:\AppServ\php5\ext\php_mssql.dll但明明存在这个文件。 
解决方法:将php_mssql.dll,ntwdblib.dll拷贝到系统目录\system32下重启测试。。 
(注:上面两个dll文件不在相同目录下,我的为c:\AppServ\php5\ext\php_mssql.dll;c:\AppServ 
\php5\ntwdblib.dll) 
另外设置好了后记得重启服务器哦。
6.其他问题:
  如果php apache Sql Server2000都在同一台机器上,访问基本没有问题了。
  如果Sql Server2000和php机器是分离的,需要确认ping sqlserver所在机器的机器名能通,如过不 
通,修改php所在机器的\system32\drivers\etc下的hosts文件,增加一行 sqlserver所在机器的机器ip 
sqlserver所在机器的机器名字。
  如果还是无法访问,需要确认php所在的机器有无暗转mdac。要不索性安装一下sqlserver的客户端 
好了。


本地电脑安装了wamp5,连接Mysql 数据库一切正常,但是连接本地的SQL Server2005却提示 Fatal 
error: Call to undefined function mssql_connect() in。经过这两天研究原来自己犯了一个弱智错 
误,自己修改的不是wamp加载的php.ini文件,因为wamp加载的是D:\wamp\Apache2\bin\php.ini ,而我 
修改的却是D:\wamp\php\php.ini

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛

发表评论 (304人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
昵称:
最新评论
------分隔线----------------------------

快速入口

· 365软件
· 杰创官网
· 建站工具
· 网站大全

其它栏目

· 建站教程
· 365学习

业务咨询

· 技术支持
· 服务时间:9:00-18:00
365建站网二维码

Powered by 365建站网 RSS地图 HTML地图

copyright © 2013-2024 版权所有 鄂ICP备17013400号