文档章节

PDO+Access[密码] PDO+Mysql PHP PDO数据库驱动 常用操作 高性能 切换库

letwang
 letwang
发布于 2013/12/31 16:34
字数 275
阅读 667
收藏 2
<?php
class DB extends PDO {
	public function __construct($host, $username, $password, $database, $port = '3306', $charset = 'UTF8') {
		$driverOptions = array (
				PDO::ATTR_PERSISTENT => true,
				PDO::ATTR_CASE => PDO::CASE_LOWER,
				PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
				PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 
		);
		if ($host) {
			$dsn = 'mysql:host=' . $host . ';dbname=' . $database . ';charset=' . $charset . ';port=' . $port . '';
		} else {
			$dsn = 'odbc:driver={microsoft access driver (*.mdb)};dbq=' . realpath ( $database ) . ';PWD=' . $password;
		}
		try {
			return parent::__construct ( $dsn, $username, $password, $driverOptions );
		} catch ( PDOException $e ) {
			echo $e->getMessage ();
		}
	}
	public function fetchAll($query, $parameters = array(), $type = PDO::FETCH_ASSOC) {
		$rs = $this->prepareAndExecute ( $query, $parameters );
		
		$rows = $rs->fetchAll ( $type );
		$rs->closeCursor ();
		
		unset ( $rs );
		return $rows;
	}
	public function fetchRow($query, $parameters = array(), $type = PDO::FETCH_ASSOC) {
		$rs = $this->prepareAndExecute ( $query, $parameters );
		
		$row = $rs->fetch ( $type );
		$rs->closeCursor ();
		
		unset ( $rs );
		return $row;
	}
	public function fetchValue($query, $parameters = array()) {
		return $this->fetchRowValue ( $query, $parameters, 0 );
	}
	public function fetchRowValue($query, $parameters = array(), $column = 0) {
		$rs = $this->prepareAndExecute ( $query, $parameters );
		
		$row = $rs->fetchColumn ( $column );
		$rs->closeCursor ();
		
		unset ( $rs );
		return $row;
	}
	public function update($query, $parameters) {
		$rs = $this->prepareAndExecute ( $query, $parameters );
		return $rs->rowCount ();
	}
	public function insert($query, $parameters = array()) {
		$rs = $this->prepareAndExecute ( $query, $parameters );
		return $this->lastInsertId ();
	}
	public function prepareAndExecute($query, $parameters = array()) {
		$rs = $this->prepare ( $query );
		$rs->execute ( $parameters );
		return $rs;
	}
}

$Mysql = new DB ( 'localhost', 'root', '123456', 'wordpress' );
$Access = new DB ( false, false, '1234567890', 'content.mdb' );

var_dump ( $Mysql->getAttribute ( PDO::ATTR_DRIVER_NAME ) );
echo '<hr />';//py by http://my.oschina.net/cart/
var_dump ( $Access->getAttribute ( PDO::ATTR_DRIVER_NAME ) );




© 著作权归作者所有

共有 人打赏支持
letwang
粉丝 140
博文 66
码字总数 74230
作品 0
南京
技术主管
加载中

评论(3)

初学小生
初学小生
不错支持
letwang
letwang

引用来自“月影又无痕”的评论

使用你这个类,局限性就是只能使用mysql, access,不能兼容其它数据库如sqlite了。
new PDO("mysql:host=?;dbname=?;port=?;charset=?", $username, $password,$driverOptions);

new PDO("odbc:driver={microsoft Access Driver (*.mdb)};dbq=$path;readonly=0;", $username, $password,$driverOptions)

new PDO("odbc:driver={microsoft Excel Driver (*.xls)};dbq=$path;readonly=0;", $username, $password,$driverOptions)

原来你是这个需求 哈哈哈
我是从实用性出发,没有做成大而全的,额外的话 自己去扩展吧
PHP的数据库使用MYSQL的占了大多数,access是本地数据库,我只是临时拿来搞下的
上面想扩展很容易吧?
月影又无痕
月影又无痕
使用你这个类,局限性就是只能使用mysql, access,不能兼容其它数据库如sqlite了。
new PDO("mysql:host=?;dbname=?;port=?;charset=?", $username, $password,$driverOptions);

new PDO("odbc:driver={microsoft Access Driver (*.mdb)};dbq=$path;readonly=0;", $username, $password,$driverOptions)

new PDO("odbc:driver={microsoft Excel Driver (*.xls)};dbq=$path;readonly=0;", $username, $password,$driverOptions)

PHPDroid 更新,PHP 开发 Android 应用

PHPDroid 更新了,集成最新PHP7+Swoole+BusyBox+QRencode 开发 Android 应用。 下载地址: phpdroid20160703.apk(5.8M) phpdroid20160703.7z(4.7M) apk里包含PHP-7.0.8和高性能网络编程扩展S...

eechen
2016/07/04
6K
52
PHP连接Mysql常用API(mysql,mysqli,pdo)的区别

什么是API? 一 个应用程序接口(Application Programming Interface的缩写),定义了类,方法,函数,变量等等一切 你的应用程序中为了完成特定任务而需要调用的内容。在PHP应用程序需要和数...

Junn
2014/03/03
0
1
LAMP架构(PHP的安装解析)

PHP官网www.php.net 当前主流版本为5.6/7.1 一,下载php包: wget http://cn2.php.net/distributions/php-.tar.gz 二,解压php包: tar zxf php-.tar.gz 进入php文件中 cd php- 三,开始编译...

小新锐
2017/12/18
0
0
ThinkPHP5.0.0 RC1版本发布——为API开发而设计

ThinkPHP V5.0——为API开发而设计的高性能框架 经过一段时间的测试和完善,官方正式发布第一个RC版本,该版本功能趋于稳定。 ThinkPHP5.0版本是一个颠覆和重构版本,基于PHP5.4设计(支持P...

流年
2016/01/30
2.4K
21
php连接mysql数据库的几种方式(mysql、mysqli、pdo)

php连接mysql数据库的几种方式(mysql、mysqli、pdo) www.111cn.net 编辑:flyfox 来源:转载 php与mysql的连接有三种API接口,分别是:PHP的MySQL扩展 、PHP的mysqli扩展 、PHP数据对象(PDO) ,...

DanEcho
2016/11/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

c语言之内存分配笔记

先看一个数组: short array[5] = {1,2} // 这儿定义的一个int类型的数组,数组第1和第2个元素值是1和2.其余后面默认会给值为0; 或者 short array[] = {1,2};//这儿数组第1和第2个元素,数组...

DannyCoder
34分钟前
0
0
Shell | linux安装包不用选择Y/N的方法

apt-get install -y packageOR echo "y" | sudo apt-get install package

云迹
今天
1
0
Hadoop的大数据生态圈

基于Hadoop的大数据的产品圈 大数据产品的一句话概括 Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架...

zimingforever
今天
4
0
八大包装类型的equals方法

先看其中一个源码 结论:八大包装类型的equals方法都是先判断类型是否相同,不相同则是false,相同则判断值是否相等 注意:包装类型不能直接用==来等值比较,否则编译报错,但是数值的基本类型...

xuklc
今天
2
0
NoSQL , Memcached介绍

什么是NoSQL 非关系型数据库就是NoSQL,关系型数据库代表MySQL 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当量非常大的时候就很耗...

TaoXu
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部