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

<?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

相关文章: