分享
 
 
 

php程序来连接SQL Server数据库的通用类

王朝mssql·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

很多朋友问我如何用php程序来连接SQL Server数据库的通用类,其实这个并不是很难的,关键是一点点仔细,一点点耐心,用激情去理解

<?

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");

Database,$this->Link_ID">$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();

?>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有