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(database error: %s
\n, $msg);
printf(mssql error: %s (%s)
\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 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();
?>