PHP面向对象 —— 10 封装mysql类

/*
封装mysql

目标:
连接数据库
发送查询
对于select型 返回查询数据
关闭mysql连接
*/


/*
思路:首先要连接,连接就要有参数.

参数如何传?
1、可以用配置文件,网站大的肯定要有配置文件
2、通过构造函数传参

建议用1,但目前写一个简单类即可.
*/

class Mysql {
	private $host;
	private $user;
	private $pwd;
	private $dbName;
	private $charset;
	
	private $con = null;
	
	
	public function __construct() {
		// 应该在构造方法里,读取配置文件
		// 然后根据配置文件来设置私有属性
		// 此处还没有配置文件,就直接赋值
		
		$this->host = 'localhost';
		$this->user = 'root';
		$this->pwd = '';
		$this->dbName = 'test';
		
		// 连接
		$this->connect($this->host,$this->user,$this->pwd,$this->dbName);
	
	    // 切换库
		$this->switchDb($this->dbName);
		
		// 设置字符集
		$this->setChar($this->charset);
	
	}
	
	// 负责连接
	private function connect($h,$u,$v,$p) {
		$con = mysqli_connect($h,$u,$v,$p);
		$this->con = $con;
	}
	
	// 负责切换数据库,网站大的时候,可能用到不止一个库
	public function switchDb($db) {
		$sql = 'use' . $db;
		$this->query($sql);
	}
	
	// 负责设置字符集
	public function setChar($char) {
		$sql = 'set names' . $char;
		$this->query($sql);
	}

	// 负责发送sql查询
	public function query($sql) {
		return mysqli_query($this->con,$sql);
	}
	
	// 负责获取多行多列的select 结果
	public function getAll($sql) {
		$list = array();
		
		$rs = $this->query($sql);
		if(!$rs) {
			return false;
		}
		
		while($row = mysqli_fetch_assoc($rs)) {
			$list[] = $row;
		}
		
		return $list;
		
	}
	
	// 获取一行的select 结果
	public function getRow($sql) {
		$rs = $this->query($sql);
		
		if(!$rs) {
			return false;
		}
		
		return mysqli_fetch_assoc($rs);
	}
	
	// 获取一个单个的值
	public function getOne($sql) {
		$rs = $this->query($sql);
		if(!$rs) {
			return false;
		}
		
		$row = mysqli_fetch_row($rs);
		
		return $row[0];
	}
	
	// 关闭资源
	public function close() {
		mysqli_close($this->con);
	}
}

echo '<pre>';

$mysql = new Mysql();

print_r($mysql);


/*
$sql = "insert into stu values(20,'object','6666')";

if($mysql->query($sql)) {
	echo 'query成功';
} else {
	echo 'query失败';
}
*/


echo '<br >';

$sql = 'select * from stu';
$arr = $mysql->getAll($sql);

print_r($arr);




// 查询79号学员
$sql = 'select * from stu where id=79';
print_r($mysql->getRow($sql));



// 查询共有多少个学生
$sql = 'select count(*) from stu';
print_r($mysql->getOne($sql));

/*
到此,一个简单的mysql封装类完成.

改进:
insert update操作,都需要大量拼接字符串.

能否给定一个数组
数组键->列
数组值->列的值

然后自动生成 insert 语句
*/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烟敛寒林o

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值