php操作access源码

Posted on 2011-07-11 09:49 PHP博客 阅读(322) 评论(0)  编辑 收藏 引用 网摘
access链接类代码
<?php
class db_access
{
    var $querynum = 0;
    var $conn;
    var $insertid = 0;
    var $cursor = 0;

    function connect($dbhost, $dbuser = '', $dbpw = '', $dbname = '', $pconnect = 0)
    {
        $this->conn = new com('adodb.connection');
        if(!$this->conn) return false;
        //    or exit('Cannot start ADO');
        $this->conn->open("DRIVER={Microsoft Access Driver (*.mdb)};dbq=$dbhost;uid=$dbuser;pwd=$dbpw");
        if($this->conn->state == 0)
        {
            $this->conn->open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=$dbhost");
            if($this->conn->state == 0)    return false;;
        }
        define('NUM', 1);
        define('ASSOC', 2);
        define('BOTH', 3);
        return $this->conn->state;
    }


    function select_db($dbname)
    {
        return $this->conn->state;
    }

    function query($sql, $type = '', $expires = 3600, $dbname = '')
    {
        $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];
            $query = $this->conn->Execute($sql);
            return $this->limit($query, $offset, $pagesize);
        }
        else
        {
            return $this->conn->Execute($sql);
        }
    }

    function get_one($query)
    {
        $this->querynum++;
        $rs = $this->conn->Execute($query);
        $r = $this->fetch_array($rs);
        $this->free_result($rs);
        return $r;
    }

    function fetch_array($rs, $result_type = 3)
    {
        if(is_array($rs))
        {
            return $this->cursor < count($rs) ? $rs[$this->cursor++] : FALSE;
        }
        else
        {
            if($rs->EOF) return FALSE;
            $array = array();
            for($i = 0; $i < $this->num_fields($rs); $i++)
            {
                $fielddata = $rs->Fields[$i]->Value;
                if($result_type == NUM || $result_type == BOTH) $array[$i] = $fielddata;
                if($result_type == ASSOC || $result_type == BOTH) $array[$rs->Fields[$i]->Name] = $fielddata;
            }
            $rs->MoveNext();
            return $array;
        }
    }
    
    function select($sql, $keyfield = '')
    {
        $array = array();
        $result = $this->query($sql);
        while($r = $this->fetch_array($result))
        {
            if($keyfield)
            {
                $key = $r[$keyfield];
                $array[$key] = $r;
            }
            else
            {
                $array[] = $r;
            }
        }
        $this->free_result($result);
        return $array;
    }

    function num_rows($rs)
    {
        return is_array($rs) ? count($rs) : $rs->recordcount;
    }

    function num_fields($rs)
    {
        return $rs->Fields->Count;
    }

    function fetch_assoc($rs)
    {
        return $this->fetch_array($rs, ASSOC);
    }

    function fetch_row($rs)
    {
        return $this->fetch_array($rs, NUM);
    }

    function free_result($rs)
    {
        if(is_resource($rs)) $rs->close();
    }

    function error()
    {
        return $this->conn->Errors[$this->conn->Errors->Count-1]->Number;
    }

    function errormsg()
    {
        return $this->conn->Errors[$this->conn->Errors->Count-1]->Description;
    }

    function close()
    {
        $this->conn->close();
    }

    function limit($rs, $offset, $pagesize = 0)
    {
        if($pagesize > 0)
        {
            $rs->Move($offset);
        }
        else
        {HTML特殊字符集
            $pagesize = $offset;
        }
        $info = array();
        for($i = 0; $i < $pagesize; $i++)
        {
            $r = $this->fetch_array($rs);
            if(!$r) break;
            $info[] = $r;
        }
        $this->free_result($rs);
        $this->cursor = 0;
        return $info;
    }
}
?>

只有注册用户登录后才能发表评论。
网站导航:

posts - 139, comments - 0, trackbacks - 0, articles - 0

Copyright © PHP博客