日期:2014-05-16  浏览次数:20766 次

PHP+MYSQL操作类
class dbconn {
    var $conn = 0;
    function dbconn($dbhost,$dbuser,$dbpw,$dbname){ $this->conn = mysql_connect($dbhost,$dbuser,$dbpw);
        !$this->conn && $this->halt("Connect to MySQL failed");
        $serverinfo = mysql_get_server_info($this->conn);
        if ($serverinfo > '4.1' && $GLOBALS['charset']) {
            mysql_query("SET character_set_connection=".$GLOBALS['charset'].",character_set_results=".$GLOBALS['charset'].",character_set_client=binary",$this->conn);
        }
        if ($serverinfo > '5.0') {
            mysql_query("SET sql_mode=''",$this->conn);
        }
        if ($dbname && !@mysql_select_db($dbname,$this->conn)) {
            $this->halt('Cannot use database');
        }
    }
    function select_db($dbname){
        if (!@mysql_select_db($dbname,$this->conn)) {
            $this->halt('Cannot use database');
        }
    }
    function server_info(){
        return mysql_get_server_info($this->conn);
    }
    function insert_id(){
        $arr = $this->fetch_array('SELECT LAST_INSERT_ID() as id');
        return $arr["id"];
    }
    function get_value($SQL,$offset=0,$field=0){
        $rt = $this->fetch_all($SQL);
        if (isset($rt[$offset][$field])) {
            return $rt[$offset][$field];
        }
        return false;
    }
    function query($SQL,$method = null,$error = true){
        $query = mysql_query($SQL,$this->conn);
        !$query && $error && $this->halt('Query Error: '.$SQL);
        return $query;
    }
    function fetch_array($SQL){
        $query = $this->query($SQL);
        return mysql_fetch_array($query);
    }
    function fetch_all($SQL) {
        $arr = array();
        $query = $this->query($SQL);
        while($data = mysql_fetch_array($query)) {
            $arr[] = $data;
        }
        return $arr;
    }
    function affected_rows(){
        return mysql_affected_rows($this->conn);
    }
    function num_rows($SQL){
        $query = $this->query($SQL);
        if (!is_bool($query)) {
            return mysql_num_rows($query);
        }
        return 0;
    }
    function num_fields($SQL){
        $query = $this->query($SQL);
        return mysql_num_fields($query);
    }
    function escape_string($str){
        return mysql_escape_string($str);
    }
    function free_result(){
        $void = func_get_args();
        foreach ($void as $query) {
            if (is_resource($query) && get_resource_type($query)==='mysql result') {
                mysql_free_result($query);
            }
        }
        unset($void);
    }
    function close(){
        $this->free_result();
        return @mysql_close($this->conn);
    }
    function halt($msg=null){
        exit($msg.'<br /><br />'.$sql.'<br /> '.mysql_error());
    }
}

?

????? 刚刚完成了一个操作PHP的类,看了几天的PHP,感觉操作MYSQL果然很快,而且简单。不过有几个问题要注意:

1、数据库的编码

????? 数据库的创建与PHP脚本必须一致。在这个例子里我用的是UTF8,所以我创建的数据库默认编码是UTF8的。也可以用GBK或GB2312,看自己的需求。不过前提是一定要保持一致,大多数PHP+MYSQL的问题都是由于编码不一致。

2、WEB页面编码

???? (1)PHP文件的编码也要非常注意。本例中使用的“UTF8”。所以我拿PHP文件用记事本打开是“ANSI”格式的,我就把它另存为“UTF8”格式的。如果是其他格式,就存为相应该的编码文件。不然页面会出现乱码。

????

???? (2)PHP页面的编码可以用HTML标签指定,在charset后加入自己的编码;

????

[xhtml] view plaincopyprint?
  1. <meta?http-equiv="Content-Type"?cont