php : mysql数据库操作类演示

摘要:
Php/*设计一个类:MySQL数据库操作类设计目标:1.一旦这个类被实例化,你就可以自动连接到MySQL数据库;2.此类可以设置独立使用的连接代码。3.该类可以设置独立使用的数据库;4.可以主动关闭连接*/ClassMySQLDB{private$link=null;//用于存储成功链接的资源//属性,存储链接数据库的基本信息private$host;private$port;private$suser;private$pwd;private$charset;private$dbname;//1)Privatefunction_ construction{//保存链接的基本信息$this-˃host=!$config['dbname']:“mysql” ;// 链接数据库$this-˃Link=mysql_connectordie;//设置代码//mysql_query;$this-˃setCharset;//将数据库名称设置为使用//mysql_query;$此-˃selectDB;}//2) 对于单个实例,存储唯一实例privatestatic$instance=null//3)静态方法,获取唯一实例staticfunctionGetInstance{//if(!

设计目标:
  1,该类一实例化,就可以自动连接上mysql数据库;
  2,该类可以单独去设定要使用的连接编码(set names XXX)
  3,该类可以单独去设定要使用的数据库(use XXX);
  4,可以主动关闭连接;

php : mysql数据库操作类演示第1张php : mysql数据库操作类演示第2张
<?php
/*
设计一个类:mysql数据库操作类
设计目标:
1,该类一实例化,就可以自动连接上mysql数据库;
2,该类可以单独去设定要使用的连接编码(set  names  XXX)
3,该类可以单独去设定要使用的数据库(use  XXX);
4,可以主动关闭连接;
*/
class MySqlDB{
    // 链接资源
    private $link = null;
    
    // 构造方法
    function __construct($host='localhost', $port=3306, $user='root', $pwd='', $charset='utf8', $dbName='mysql'){
        $this->link = @mysql_connect("$host:$port", $user, $pwd); // @:阻止警告输出
        mysql_query("set names $charset"); // 设置编码
        mysql_query("use $dbName"); // 设置使用的数据库
    }

    // 可设置链接编码
    function setCharset($charset){
        mysql_query("set names $charset");
    }

    // 可设置使用的数据库
    function selectDB($dbName){
        mysql_query("use $dbName");
    }

    // 可关闭链接
    function closeDB(){
        mysql_close($this->link);
    }
}


# ************************* 测试 *************************
$host = 'localhost';
$port = 3306;
$user = 'root';
$pwd = '123456';
$charset = 'utf8';
$dbname = 'db1';

$db = new MySqlDB($host, $port, $user, $pwd, $charset, $dbname);

// 测试是否链接成功
$set = mysql_query("select * from student");
var_dump($set);
echo "<br>";

// 测试修改编码
$db->setCharset('gbk');


//**********  显示数据 **********
echo "<table border='1'>";
echo "<tr>";
// 获得列数
$field_count = mysql_num_fields($set);
for($i=0; $i<$field_count; $i++){
    // 获得第 i 列的名称
    $field_name = mysql_field_name($set, $i);
    echo "<td>". $field_name . "</td>";
}
echo "</tr>";
// 遍历每一行记录
while($rec = mysql_fetch_array($set)){
    echo "<tr>";

    for($i=0; $i<$field_count; $i++){
        // 获取列名
        $field_name = mysql_field_name($set, $i);
        // 获取该记录,改行的数据
        echo "<td>" . $rec[$field_name] . "</td>";
    }

    echo "</tr>";
}

echo "</table>";

// ********* end **********


// 测试关闭链接
$db->closeDB();
$set = @mysql_query("select * from student");
var_dump($set);
echo "<br>";

?>
View Code

改进: 使用单例

php : mysql数据库操作类演示第1张php : mysql数据库操作类演示第4张
<?php
/*
设计一个类:mysql数据库操作类
设计目标:
1,该类一实例化,就可以自动连接上mysql数据库;
2,该类可以单独去设定要使用的连接编码(set  names  XXX)
3,该类可以单独去设定要使用的数据库(use  XXX);
4,可以主动关闭连接;
*/

class MySQLDB{
    private $link = null; // 用于存储成功链接后的资源

    // 属性, 存储链接数据库的基本信息
    private $host;
    private $port;
    private $user;
    private $pwd;
    private $charset;
    private $dbname;

    // 1)私有化构造方法
    private function __construct($config){
        // 保存链接的基本信息
        $this->host = !empty($config['host']) ? $config['host'] : "localhost";
        $this->port = !empty($config['port']) ? $config['port'] : "3306";
        $this->user = !empty($config['user']) ? $config['user'] : "root";
        $this->pwd = !empty($config['pwd']) ? $config['pwd'] : "";
        $this->charset = !empty($config['charset']) ? $config['charset'] : "utf8";
        $this->dbname = !empty($config['dbname']) ? $config['dbname'] : "mysql";
        
        // 链接数据库
        $this->link = mysql_connect("{$this->host}:{$this->port}", "$this->user", "$this->pwd")
            or die("链接失败");

        // 设定编码
        //mysql_query("set names {$config['charset']}");
        $this->setCharset($config['charset']);

        // 设定要使用的数据库名
        //mysql_query("use {$config['dbname']}");
        $this->selectDB($config['dbname']);
    }

    // 2)单例, 存储唯一实例
    private static $instance = null;

    // 3)静态方法,获取唯一实例
    static function GetInstance($config){
        //if(!isset(self::$instance)){ // ==>等价于
        if(!(self::$instance instanceof self)){ // 更常用
             self::$instance = new self($config); // 创建并保存起来
        }
        return self::$instance;
    }

    // 4)私有化克隆方法
    private function __clone(){}

    // 可设定要使用的编码
    function setCharset($charset){
        mysql_query("set names $charset", $this->link);
    }

    // 可设定要使用的数据库
    function selectDB($dbname){
        mysql_query("use $dbname", $this->link);
    }

    // 可关闭数据库链接
    function closeDB(){
        mysql_close($this->link);
    }

    // 执行 sql 语句,进行错误处理,并返回结果
    private function query($sql){
        $result = mysql_query($sql, $this->link);
        if($result === false){
            // 失败处理
            echo "sql语句执行失败,请参考如下信息:";
            echo "<br />错误代码: " . mysql_errno();
            echo "<br />错误信息: " . mysql_error();
            echo "<br />错误语句: " . $sql;
            die(); 
        }
        return $result;
    }

    // 执行一条 增删改 sql语句,返回真或假
    function exec($sql){
        $result = $this->query($sql);
        return true;
    }
    
    // 执行一条 sql 语句,返回一行记录
    function getOneRow($sql){
        $result = $this->query($sql);
        $rec = mysql_fetch_assoc($result);
        // 提前销毁结果集,否则需要等待页面结束才能自动销毁
        mysql_free_result($result);
        return $rec;
    }

    // 执行一条 sql 语句,返回多行记录
    function getRows($sql){
        $result = $this->query($sql);
        $arr = array();
        while($rec = mysql_fetch_assoc($result)){
            $arr[] = $rec; // 二维数组
        }

        mysql_free_result($result);
        return $arr;
    }

    // 执行一条 sql 语句,直接返回一个结果
    // 类似于: select  count(*) as c  from  user_list
    function getOneData($sql){
        $result = $this->query($sql);
        $rec = mysql_fetch_row($result);
        $data = $rec[0];
        mysql_free_result($result);
        return $data;
    }
}
?>
View Code

-------------->>>

免责声明:文章转载自《php : mysql数据库操作类演示》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android_如何将.9的图片转换成bitmapWindows 2008 server + IIS 7 设置身份模拟(ASP.NET impersonation)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[转]lamp的phpadmin安装

 1. 下载phpMyAdmin-3.3.7(在https://www.phpmyadmin.net/downloads/  中找到自己要下载的版本)       wget http://sourceforge.net/projects/phpmyadmin/files%2FphpMyAdmin%2F3.3.7%2FphpMyAdmin-3.3.7-all...

RMAN 系列(七) RMAN 维护

这篇资料主要讲到了如下内容: 1. Rman 的维护 2. 恢复目录的维护 3. 备份恢复目录 4. RMAN 存储脚本 5. 删除数据库   一. RMAN 的维护 1.1 交叉效验RMAN 备份 在RMAN目录和物理备份目的地不同步的情况下,我们可以使用crosscheck命令来效验控制文件或恢复目录中的RMAN信息是否与备份介质上的实际物理备...

MS-SQL2005服务器登录名、角色、数据库用户、角色、架构的关系

MS SQL2005对2000进行了很大的改进,而用户关系这部分也变得相当复杂了,很多朋友都对此一知半解!下面,我将把我应用中总结的和大家分享下,先从概念入手,希望对不理解的朋友有点提示。 今天我们要说的包括服务器登录名Server Login,服务器角色Server Role,数据库用户DB User,数据库架构DB Schema,数据库角色DB Ro...

Oracle用户密码过期问题解决

一、用户密码即将过期,导致autotrace无法打开如果用户密码即将过期,在登录数据库时会收到如下提示:ERROR:ORA-28002: the password will expire within 7 days当然,此时密码还未真正过期,用户在收到错误提示后依然可以登录数据库。但是,如果当收到密码即将过期的提示,想要开启autotrace就会有问题。...

免疫信息学

http://blog.sciencenet.cn/blog-204973-845856.html 第一节 免疫信息学源流 上个世纪中叶充满科学传奇。那不仅是个DNA双螺旋结构阐明、分子生物学产生与兴起的时代,也是系统论、控制论、信息论纷纷形成问世并引起全球广泛关注的时代,还是电子计算机走进人类社会并产生重要影响的时代。香农发表了《通信的数学理论》,奠定了...

ORACLE SQLloader详细语法

Oracle SQL Loader的详细语法SQL*LOADER是ORACLE的数据加载工具,通常用来将操作系统文件迁移到ORACLE数据库中。SQL*LOADER是大型数据仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECT,PARALLEL)。现在,我们抛开其理论不谈,用实例来使您快速掌握SQL*LOADER的使用方法。首先,我们认识一下SQ...