PHP数据库操作类

制作一个PHP数据库操作类。还缺一些东西,如:写入日志、持久性连接处理等,以后慢慢再完善。


1、配置文件conn.ini.php

<?php
//数据库配置文件
$host = "127.0.0.1";
$dbUser = "root";
$dbPassword = "root";
$db = "phpstu";
$encode = "utf8"
?>

2、数据库操作类文件Mysql.class.php

<?php
class MySql {

	private $conn = "";

	public function __construct() {
		return $this->connect();
	}

	//连接数据库、设置编码
	public function connect() {
		require_once ("conn.ini.php");
		$this->conn = @ mysql_connect($host, $dbUser, $dbPassword);
		if (!$this->conn)
			$this->error_msg("数据库服务器连接失败!");
		if (!@ mysql_select_db($db))
			$this->error_msg("数据库连接失败!");
		mysql_set_charset($encode);
	}

	//执行非查询SQL语句
	public function excute($sql) {
		$result = @ mysql_query($sql);
		if (!$result)
			$this->error_msg("请检查SQL语句!");
		return $result;
	}

	//新增
	public function add($table, $dataArr) {
		if (!is_array($dataArr) || count($dataArr) == 0) {
			$this->error_msg("插入数据为空!请检查!");
			return false;
		}
		$fields = "";
		$values = "";
		//$fields = implode(",", array_keys($dataArr));
		//$values = implode(",", array_values($dataArr));    //使用这种方法产生的字符串,不带单引号,执行SQL语句时出错。
		while (list ($key, $value) = each($dataArr)) {
			$fields .= "`$key`,";
			$values .= "'$value',";
		}
		$fields = substr($fields, 0, -1);
		$values = substr($values, 0, -1);
		$sql = "insert into $table ($fields) values ($values)";
		if (!$this->excute($sql))
			return false;
		return true;
	}

	//更新全部,慎重调用!
	public function updateAll($table, $dataArr) {
		if (!is_array($dataArr) || count($dataArr) == 0) {
			$this->error_msg("更新数据为空!请检查!");
			return false;
		}
		$values = "";
		while (list ($key, $value) = each($dataArr))
			$values .= "`$key`='$value',";
		$values = substr($values, 0, -1);
		$sql = "update $table set $values";
		echo "$sql";
		if (!$this->excute($sql))
			return false;
		return true;
	}

	//根据条件更新
	public function update($table, $dataArr, $where = "") {
		if (empty ($where)) {
			$this->error_msg("更新条件不能为空!");
			return false;
		}
		if (!is_array($dataArr) || count($dataArr) == 0) {
			$this->error_msg("更新数据为空!请检查!");
			return false;
		}
		$values = "";
		while (list ($key, $value) = each($dataArr))
			$values .= "$key='$value',";
		$values = substr($values, 0, -1);
		$sql = "update $table set $values where $where";
		if (!$this->excute($sql))
			return false;
		return true;
	}

	//删除全部
	public function delAll($table) {
		$sql = "delete from $table";
		if (!$this->excute($sql))
			return false;
		return true;
	}

	//根据条件删除
	public function del($table, $where = "") {
		if (empty ($where)) {
			$this->error_msg("删除条件不能为空!");
			return false;
		}
		$sql = "delete from $table where $where";
		if (!$this->excute($sql))
			return false;
		return true;
	}

	//查询,获取符合条件的全部记录
	//$result_type可选值:MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH
	public function getAll($sql, $result_type = MYSQL_ASSOC) {
		$rows = array ();
		$result = @ mysql_query($sql);
		if (!$result)
			$this->erro_msg("查询失败,请检查SQL语句!");
		while ($row = mysql_fetch_array($result, $result_type)) {
			$rows[] = $row;
		}
		return $rows;
	}

	//查询,获取一条记录
	//$result_type可选值:MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH
	public function getOne($sql, $result_type = MYSQL_ASSOC) {
		$result = @ mysql_query($sql);
		if (!$result)
			$this->erro_msg("查询失败,请检查SQL语句!");
		$row = mysql_fetch_array($result, $result_type);
		return $row;
	}

	//获取新插入的ID
	public function getInsertId() {
		//$id = mysql_insert_id();				//这个方法有获取不准确的可能,不建议使用,所以注释掉了。
		$row = $this->getOne("select LAST_INSERT_ID()", MYSQL_NUM);
		return $row[0];
	}

	//获取记录条数
	public function getRecordNum($sql) {
		$result = @ mysql_query($sql);
		if (!$result)
			$this->erro_msg("查询失败,请检查SQL语句!");
		return mysql_num_rows($result);
	}

	//获取执行SQL语句影响的行数
	//关于这个方法还有一些疑问的地方,比如:官方手册中说此方法只对非查询语句起作用,但我在测试的时候发现查询语句也可以。以后有空再研究吧!
	public function getAffectedRows() {
		return mysql_affected_rows();
	}

	//错误提示信息
	public function error_msg($msg = "") {
		$msg .= "<br />" . mysql_error();
		$msg = "<div style='color=\"red\"'>" . $msg . "</div>";
		die($msg);
	}

	//释放资源,点位,待研究
	public function freeResult() {

	}

	//关闭数据库连接
	//对于永久性连接,需要手动关闭,具体的知识还需要花时间研究,先放个空方法在这里占位。
	public function close() {

	}

	//析构函数
	public function __destruct() {

	}
}
?>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值