PHP+MYSQL操作类 _PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > PHP+MYSQL操作类

PHP+MYSQL操作类

 2012/6/1 16:45:10  kenkao  程序员俱乐部  我要评论(0)
  • 摘要:classdbconn{var$conn=0;functiondbconn($dbhost,$dbuser,$dbpw,$dbname){$this->conn=mysql_connect($dbhost,$dbuser,$dbpw);!$this->conn&&$this->halt("ConnecttoMySQLfailed");$serverinfo=mysql_get_server_info($this->conn);if
  • 标签:PHP SQL 操作 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"?content="text/html;?charset=utf-8"?/>??

?

?

???? 也可以在PHP脚本中使用。

???

[php] view plaincopyprint?
  1. header("content-type:text/html;?charset=utf-8");???

?

??? (3)操作数据库时的编码,本例使用UTF8。

???

[php] view plaincopyprint?
  1. mysql_query("set?names?utf8",$this->conn);??

?

??? 如果数据库使用的GBK,或GB2312,则换成相应的编码。

???

?

[php] view plaincopyprint?
  1. <?php??
  2. class?DBOperate{??
  3. ????var?$host;??
  4. ????var?$user;??
  5. ????var?$password;??
  6. ????var?$conn;??
  7. ????var?$db;??
  8. ????/*?
  9. ????*构造函数?
  10. ????*@param?$host?主机名?
  11. ????*@param?$user?数据库用户?
  12. ????*@param?$password?数据库密码?
  13. ????*@param?$db?当前使用的数据库名?
  14. ????*/??
  15. ????function?DBOperate($host,$user,$password,$db){??
  16. ????????$this->host=$host;??
  17. ????????$this->user=$user;??
  18. ????????$this->password=$password;??
  19. ????????$this->db=$db;??
  20. ????????$this->conn=mysql_connect($this->host,$this->user,$this->password)??
  21. ????????????????????or?die("connect?error:".mysql_error());??
  22. ????????mysql_select_db($this->db,$this->conn)??
  23. ???????????or?die("switch?db?error:".mysql_error());??
  24. ????????mysql_query("set?names?utf8",$this->conn);??
  25. ????}??
  26. ????/*?
  27. ????*@param?$sql?添加记录的语句?
  28. ????*用于插入记录?
  29. ????*/??
  30. ????function?Add($sql){??
  31. ????????mysql_query($sql,$this->conn)?or?die("insert?error:".mysql_error());??
  32. ????}??
  33. ????/*?
  34. ????*@param?$sql?更新记录的语句?
  35. ????*用于更新记录?
  36. ????*/??
  37. ????function?Update($sql){??
  38. ????????mysql_query($sql,$this->conn)?or?die("update?error:".mysql_error());??
  39. ????}??
  40. ????/*?
  41. ????*@param?$sql?删除记录的语句?
  42. ????*用于删除记录?
  43. ????*/??
  44. ????function?Delete($sql){??
  45. ????????mysql_query($sql,$this->conn)?or?die("delete?error:".mysql_error());??
  46. ????}??
  47. ????/*?
  48. ????*@param?$sql?查询记录的语句?
  49. ????*@return?$arrs?以一个数组的形式返回数据库中所有记录的结果集?
  50. ????*结果如下:Array([0]=>Array(第一条记录)?[1]=>Array(第二条记录)...)?
  51. ????**/??
  52. ????function?getRecords($sql){??
  53. ????????$all=mysql_query($sql,$this->conn);??
  54. ????????$i=0;??
  55. ????????while($result=mysql_fetch_array($all)){??
  56. ????????????$arrs[$i]=$result;??
  57. ????????????$i++;??
  58. ????????}??
  59. ????????return?$arrs;??
  60. ????}??
  61. ????/*?
  62. ????*@param?$sql?查询记录的语句?
  63. ????*@return?$arrs?以一个数组的形式返回所有字段的结果集?
  64. ????*结果如下:Array([0]=>字段名?[1]=>字段名...)?
  65. ????**/??
  66. ????function?getFields($sql){??
  67. ????????$all=mysql_query($sql,$this->conn);??
  68. ????????$i=0;??
  69. ????????while($result=mysql_fetch_field($all)){??
  70. ????????????$arrs[$i]=$result->name;??
  71. ????????????$i++;??
  72. ????????}??
  73. ????????return?$arrs;??
  74. ????}??
  75. ????function?Close(){??
  76. ????????mysql_close($this->conn);??
  77. ????}??
  78. }??
  79. $db=new?DBOperate("localhost","root","admin","mydb");??
  80. //$db->Add("insert?into?news?values(null,'新闻依旧','无上智者',now())"); ??
  81. print_r($db->getRecords("select?*?from?news"));??
  82. $result=$db->getFields("select?*?from?news");??
  83. for($i=0;$i<count($result);$i++){??
  84. ????echo?$result[$i]."<br?/>";??
  85. }??
  86. $db->Close();??
  87. ?>??
  • 大小: 50.3 KB
  • 查看图片附件
发表评论
用户名: 匿名