一个关于php使用pdo方式进行数据库连接和处理的类

话不多说,先贴代码


<?php 
/**
	@DB Operates For PDO
	@author:MeeeeN
	@date:2015-10-22 22:40:32
**/

	//定义数据库信息
	
	header("Content-type:text/html; charset=utf-8");

	define('DB_HOST', 'localhost');
	define('DB_USER', 'root');
	define('DB_PWD', '');
	define('DB_NAME', 'lesson');

	class DBPDO {

		private static $instance;       
    	public $dsn;       
    	public $dbuser;       
    	public $dbpwd;       
    	public $sth;       
    	public $dbh; 

    	//初始化
		function __construct() {
			$this->dsn = 'mysql:host='.DB_HOST.';dbname='.DB_NAME;
			$this->dbuser = DB_USER;
			$this->dbpwd = DB_PWD;
			$this->connect();
			$this->dbh->query("SET NAMES 'UTF8'");
			$this->dbh->query("SET TIME_ZONE = '+8:00'");
		}

		//连接数据库
		public function connect() {
			try {
				$this->dbh = new PDO($this->dsn, $this->dbuser, $this->dbpwd);
			}
			catch(PDOException $e) {
				exit('连接失败:'.$e->getMessage());
			}
		}

		//获取表字段
		public function getFields($table='vista_order') {
			$this->sth = $this->dbh->query("DESCRIBE $table");
			$this->getPDOError();
			$this->sth->setFetchMode(PDO::FETCH_ASSOC);
			$result = $this->sth->fetchAll();
			$this->sth = null;
			return $result;
		}

		//插入数据
		public function insert($sql) {
			if($this->dbh->exec($sql)) {
				$this->getPDOError();
				return $this->dbh->lastInsertId();
			}
			return false;
		}

		//删除数据
		public function delete($sql) {
			if(($rows = $this->dbh->exec($sql)) > 0) {
				$this->getPDOError();
				return $rows;
			}
			else {
				return false;
			}
		}

		//更改数据
		public function update($sql) {
			if(($rows = $this->dbh->exec($sql)) > 0) {
				$this->getPDOError();
				return $rows;
			}
			return false;
		}

		//获取数据
		public function select($sql) {
			$this->sth = $this->dbh->query($sql);
			$this->getPDOError();
			$this->sth->setFetchMode(PDO::FETCH_ASSOC);
			$result = $this->sth->fetchAll();
			$this->sth = null;
			return $result;
		}

		//获取数目
		public function count($sql) {
			$count = $this->dbh->query($sql);
			$this->getPDOError();
			return $count->fetchColumn();
		}

		//获取PDO错误信息
		private function getPDOError() {
			if($this->dbh->errorCode() != '00000') {
				$error = $this->dbh->errorInfo();
				exit($error[2]);
			}
		}

		//关闭连接
		public function __destruct() {
			$this->dbh = null;
		}
	}

	//eg: an example for operate select

	$test = new DBPDO;

	$sql = "SELECT * FROM `vista_order` WHERE `id`!=100 ";

	$rs = $test->select($sql);

	print_r($rs);
	




?>

这是之前研究了一段时间pdo后所写出来的一个pdo数据库相关操作类(比较懒,一直没更新博客),参考了一些网上的相关文章,但是感觉很多要么写得有错误,要么很啰嗦,所以自己搞了个,其实本来我是一直是用mysql类连接的,但是升级了php版本后发现不支持mysql方式连接了,又感觉mysqli比较啰嗦,所以索性改为用pdo,其实基本功能来说的话,这个类中construct,connection,destruct三个function就足够了,不过方便快速使用的话还是多写了一些function,个人感觉这个类的可移植性还是蛮高的,最后有使用的例子,基本上引用DBPDO类之后,只要自己写好sql语句,增删改查就都可以实现了


  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
自主封装的PHP ORM框架,面向对象的PDO数据库操作,API框架,支持Get/Post/Put/Delete多种请求方式。 代码示例: <?php use Models\User; require '../application.php'; require '../loader-api.php'; //适合查询,如:获取用户列表或者单个用户信息 execute_request(HttpRequestMethod::Get, function() { $action = request_action(); //判断是否存在 if ($action == 1) { list($type, $value) = filter_request(array( request_int('type', 1, 2, 3), //1.用户名 2.邮箱 3.手机号 request_string('value'))); $type_field_map = array( 1 => User::$field_username, 2 => User::$field_email, 3 => User::$field_phone ); if ($type == 2 && !is_email($value) || $type == 3 && !is_mobilephone($value)) { die_error(USER_ERROR, $type_field_map[$type]['name'] . '格式无效'); } $user = new User(); $user->set_where_and($type_field_map[$type], SqlOperator::Equals, $value); $result = $user->exists(create_pdo()); echo_result($result ? 1 : 0); //存在返回1,不存在返回0 } //查询单条信息 if ($action == 2) { list($userid) = filter_request(array( request_userid())); //查询单条数据 $user = new User($userid); //set_query_fields可以指定查询字段,下面两种写法均可 //$user->set_query_fields('userid, username, email'); //$user->set_query_fields(array(User::$field_userid, User::$field_username, User::$field_email)); //还可设置where条件进行查询 //$user->set_where_and(User::$field_status, SqlOperator::Equals, 3); //$user->set_where_and(User::$field_truename, SqlOperator::IsNullOrEmpty); //$user->set_where_and(User::$field_age, SqlOperator::In, array(27, 29)); //$user->set_where_and(User::$field_regtime, SqlOperator::LessThan, '-6 month'); //创建数据库连接 $db = create_pdo(); $result = $user->load($db, $user); //也可以用Model的静态方法 //$result = Model::load_model($db, $user, $user); if (!$result[0]) die_error(PDO_ERROR_CODE, '获取用户信息时数据库错误'); if (!$user) di
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值