跳至 [1] [2] [全屏预览] dbhost = !empty($db['hostname']) ? $db['hostname'] : 'localhost'; $this->dbuser = $db['username']; $this->dbpw = $db['password']; $this->dbname = $db['dbname']; $this->pconnect = !empty($db['pconnect']) ? $db['pconnect'] : 0; $this->connect(); } public static function getdatabase($db){ if(empty(self::$instance)){ self::$instance = new mssql($db); } return self::$instance; } /** * 连接数据库 * @return int */ private function connect() { $func = $this->pconnect == 1 ? 'mssql_pconnect' : 'mssql_connect'; if(!$this->connid = @$func($this->dbhost, $this->dbuser, $this->dbpw)){ $this->halt('can not connect to mssql server'); } if(!empty($this->dbname)){ if(!$this->select_db($this->dbname)){ $this->halt('cannot use database '.$this->dbname); } } return $this->connid; } /** * 选择数据库 * @param $dbname * @return bool */ public function select_db($dbname) { return @mssql_select_db($dbname , $this->connid); } /** * 直接执行sql * @param $sql * @return mixed */ public function query_simple($sql) { if(empty($sql)){ $this->halt('sql is null!'); } $result = mssql_query($sql, $this->connid); if(!$result){ //调试用,sql语句出错时会自动打印出来 $this->halt('mssql query error', $sql); } $this->result = $result; return $this->result; } /** * 过滤执行sql * @param $sql * @return array|mixed */ public function query($sql) { $this->querynum++; $sql = trim($sql); if(preg_match(/^(select.*)limit ([0-9]+)(,([0-9]+))?$/i, $sql, $matchs)){ $sql = $matchs[1]; $offset = $matchs[2]; $pagesize = $matchs[4]; $this->result = mssql_query($sql, $this->connid) or $this->halt('mssql query error', $sql); return $this->limit($this->result, $offset, $pagesize); }elseif(preg_match(/^insert into/i, $sql)){ $sql = $sql; select @@identity as insertid; $this->result = mssql_query($sql, $this->connid) or $this->halt('mssql query error', $sql); $insid = $this->fetch_row($this->result); $this->insertid = $insid[0]; return $this->result; }else{ $this->result = mssql_query($sql, $this->connid) or $this->halt('mssql query error', $sql); return $this->result; } } /** * 获取一条数据(一维数组) * @param $sql * @return array|bool */ public function find($sql) { $this->result = $this->query($sql); $args = $this->fetch_array($this->result); return $args ; } /** * 获取多条(二维数组) * @param $sql * @param string $keyfield * @return array */ public function findall($sql, $keyfield = '') { $array = array(); $this->result = $this->query($sql); while($r = $this->fetch_array($this->result)){ if($keyfield){ $key = $r[$keyfield]; $array[$key] = $r; }else{ $array[] = $r; } } return $array; } public function fetch_array($query, $type = mssql_assoc) { if(is_resource($query)) return mssql_fetch_array($query, $type); if($this->cursor cursor++]; } return false; } public function affected_rows() { return mssql_rows_affected($this->connid); } public function num_rows($query) { return is_array($query) ? count($query) : mssql_num_rows($query); } public function num_fields($query) { return mssql_num_fields($query); } public function get_result($query, $row) { return @mssql_result($query, $row); } /** * 释放连接资源 * @param $query */ public function free_result($query) { if(is_resource($query)) @mssql_free_result($query); } public function insert_id() { return $this->insertid; } public function fetch_row($query) { return mssql_fetch_row($query); } /** * 关闭数据库连接 * @return bool */ public function close() { return mssql_close($this->connid); } /** * 抛出错误 * @param string $message * @param string $sql */ public function halt($message = '', $sql = '') { $_sql = !empty($sql) ? mssql query:$sql
: ''; exit({$_sql}message:$message); } public function limit($query, $offset, $pagesize = 0) { if($pagesize > 0){ mssql_data_seek($query, $offset); }else{ $pagesize = $offset; } $info = array(); for($i = 0; $i fetch_array($query); if(!$r) break; $info[] = $r; } $this->cursor = 0; return $info; } /** * 初始化存储过程 * @param $pronme * @return resource */ public function init_pro($pronme) { return mssql_init($pronme, $this->connid); } /** * 开始一个事务. */ public function begin() { $this->query('begin tran'); } /** * 提交一个事务. */ public function commit() { $this->query('commit tran'); } /** * 回滚一个事务. */ public function rollback() { $this->query('rollback tran'); } /** * 析构函数,关闭数据库,垃圾回收 */ public function __destruct() { if(!is_resource($this->connid)){ return; } $this->free_result($this->result); $this->close(); }}
2. [代码]使用方法 跳至 [1] [2] [全屏预览] 'localhost', //主机地址 'username' => 'sa', //用户名 'password' => '123', //密码 'dbname' => 'test_db', //数据库名);#如果是linux,端口号不是默认1433,那么hostname就是 localhost:端口号$db = mssql::getdatabase($_db); //数据库连接#最终 $db 就是你的数据库实例#查询示例$sql = select * from table1;#查询单条:$result = $db->find($sql);#查询多条:$result = $db->findall($sql);#执行增删改:$result = $db->query($sql);#...