首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  PHP安装/语法/函数 » [原创] php程序来连接SQL Server数据库的通用类 ~~~~~  


  作者:softom
  注册时间:2005-06-01
  主题/回复:3/0
  积分:400
  等级:★★☆(五级)
  称号:略有小成

  lkjfei@tom.com
  未提供
  www.

 

 发表:2005-06-01 19:17:49 阅读 2172 次 回复 1 次 得分1  |   字号 字色
[原创] php程序来连接SQL Server数据库的通用类 ~~~~~
 php程序来连接SQL Server数据库的通用类 ~~~~~
 
 注意:php空间需要支持mssql模块 
 很多朋友问我如何用php程序来连接SQL Server数据库的通用类,其实这个并不是很难的,关键是一点点仔细,一点点耐心,用激情去理解 
 
    抽象,要是你激情耗尽了它还是什么都不像的话,那就麻烦了。以下是我的一点经验,而且有兴趣搞智能建站的朋友可以去这个网站看看( http://www.now.net.cn)这家公司很不错的,在珠海,叫时代互联。有些朋友可能已经知道。它一直是业内的领先者,技术力量很雄厚,主要业务是智能建站、域名申请、企业邮箱、主机租售等等。有兴趣的朋友可以登陆( http://www.now.net.cn )拨打全球免费服务电话咨询。言归正传 
    <? 
    class DB { 
 var $Host = "192.168.0.199"; // Hostname of our MySQL server 
 var $Database = "test"; // Logical database name on that server 
 var $User = "user"; // Database user 
 var $Password = "password"; // Database user's password 
 
 var $Link_ID = 0; // Result of mssql_connect() 
 var $Query_ID = 0; // Result of most recent mssql_query() 
 var $Row = 0; // Current row number 
 var $Errno = 0; // Error state of query 
 var $Error = ""; 
 
    var $AffNum=0; 
 
    /************************************** 
 *打印错误方法:显示页面处理的错误信息。 
    ****************************************/ 
    function Halt($msg) { 
 printf("</td></tr></table><b>Database error:</b> %s<br>\n", $msg); 
 printf("<b>mssql Error</b>: %s (%s)<br>\n", 
 $this->Errno, 
 $this->Error); 
 die("Session halted."); 
 } 
 
    /************************************** 
 *连接数据库,并且选择默认的数据库 
 **************************************/ 
    function Connect() { 
 if ( 0 == $this->Link_ID ) { 
    $this->Link_ID=mssql_connect($this->Host,$this->User,$this->Password) or die("Couldn't connect to SQL Server on 
 
    $servername"); 
    $db=@mssql_select_db($this->Database,$this->Link_ID); 
 if (!$this->Link_ID) { 
 $this->Halt("Link-ID == false, mssql_connect failed"); 
 } 
 } 
 } 
 
    /**************************************** 
 *关闭数据库,如果数据库连接已经打开则关闭它 
 *请在调用Connect()并处理后使用Close() 
 ****************************************/ 
    function Close() { 
    if (0 != $this->Link_ID){ 
    mssql_close(); 
    } 
    } 
 
    /************************************************* 
 *输入sql语句,有select,update,insert,delete 
 *包括存储过程也可以通过这个方法来调用。 
 *************************************************/ 
    function Query($Query_String) { 
 $this->Connect(); 
 
 $this->Query_ID = mssql_query($Query_String); 
 $this->Row = 0; 
 if (!$this->Query_ID) { 
    $msg=mssql_get_last_message(); 
 
    if($msg==null || $msg=="") 
    { 
    $this->AffNum=1; 
    return 1; 
    } 
 
    if(strtolower(substr($Query_String,0,6))!="select"){ 
    $this->AffNum=1; 
    return 1; 
    } 
 
 $this->Errno = 1; 
 $this->Error = "General Error (The mssql interface cannot return detailed error messages)(".$msg.")."; 
 $this->halt("Invalid SQL: ".$Query_String); 
 } 
 return $this->Query_ID; 
 } 
 
    /******************************************************* 
 *把查询数据库的指针移到下一条记录 
 *******************************************************/ 
    function NextRecord() { 
 $this->Record = array(); 
    mssql_next_result($this->Query_ID); 
    $this->Record=mssql_fetch_array($this->Query_ID); 
 
    $result=$this->Record; 
    if(!is_array($result)) return $this->Record; 
    foreach($result as $key => $value){ 
    $keylower=strtolower($key); 
    if($keylower!=$key) $this->Record[$keylower]=$value; 
    } 
 
 return $this->Record; 
 } 
 
    /******************************************************** 
 *重新定位查询数据库的指针 
 ********************************************************/ 
    function Seek($pos) { 
    if($pos<=0) return; 
    if(eregi("[0-9]",$pos)) mssql_data_seek($this->Query_ID,$pos); 
 } 
 
    /******************************************************** 
 *获取查询数据库得到的总行数 
 ********************************************************/ 
    function NumRows() { 
    if($this->Query_ID) $num_rows=mssql_num_rows($this->Query_ID); 
    else $num_rows=$this->AffNum; 
 
 return $num_rows; 
 } 
 
    /******************************************************* 
 *字段数 
 *******************************************************/ 
    function NumFields() { 
 return count($this->Record)/2; 
 } 
 
    /******************************* 
 *该字段的值 
 *******************************/ 
    function FieldValue($Field_Name){ 
    return $this->Record[$Field_Name]; 
 } 
 
    /****************************** 
 *update,insert,delete影响的行数 
 ******************************/ 
    function AffectedRows() { 
    if($this->Query_ID) return mssql_num_rows($this->Query_ID); 
    else{ 
    return $this->AffNum; 
    } 
 } 
    ?> 
 
 
    以下是使用示例: 
 
    <? 
    //构造新的DB类 
    $DBConn=new DB; 
 
    //写入sql查询语句 
    $SqlStr="select * from test"; 
    $DBConn->Query($SqlStr); 
   
    //循环输出查询得到的结果 
    while($Row=$DBConn->NextRecord()){ 
    echo $Row[testid]; 
    } 
 
    //关闭数据库连接 
    $DBConn->Close(); 

    ?> 
   
    大家快到这里继续学习其他的知识: http://www.now.net.cn/support/ 

以下空间推荐:
  ★基本B 支持PHP   送CN域名 送100Mb邮局 298元/年
  ★增强B 支持PHP   798元/年 送CN域名 送300M 空间邮箱
  ★商务型D   支持JSP/PHP    SQL SERVER2000   2300元/年


 详情点击:http://now.net.cn/host/commerce.net

 免费咨询电话 : http://www.now.net.cn/customer/moreline.net 

 QQ 联系 :168075865  188092185
 
 1#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 1#楼 发表于2005-06-02 01:50:02  评分:1 

呵呵,这篇还可以。
要不是因为有这一篇文章还算正宗,其他两篇广告就给你删啦
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.027sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版