文档章节

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

letwang
 letwang
发布于 2013/12/31 16:34
字数 275
阅读 657
收藏 2
点赞 1
评论 3
<?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
博文 67
码字总数 76298
作品 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 ⋅ 52

PHP连接Mysql常用API(mysql,mysqli,pdo)的区别

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

Junn ⋅ 2014/03/03 ⋅ 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

ThinkPHP5.0.0 RC1版本发布——为API开发而设计

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

流年 ⋅ 2016/01/30 ⋅ 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

pdo常用的sql写法

 mysql*函数已经过时,相当一段时间以来,mysql函数在其他SQL数据库编程接口方面已经有所差别;它不支持预处理,存储过程,事务等一些现代数据库设计思想,SQL语句字符串转义函数 和 拼接S...

chenhongjiang ⋅ 2016/05/06 ⋅ 0

PHP5.4配置sql server

终于解决这个问题了,其实这个问题分2种! 1:php5.2及以前版本,非常好解决。开启扩展,如果没有mssql.dll,下载一个就可以了! 2:php5.3版本以上,需要从微软下载2个驱动(5.3版本开始mss...

KavenSu ⋅ 2014/06/09 ⋅ 1

PHP服务缓存加速优化实战

PHP服务缓存加速优化实战 (1) 操作码介绍及缓存原理: 当客户端请求一个PHP程序的时候,服务器的 PHP 引擎会解析该 PHP 程序,并将其编译为特定的操作码(Operate Code)文件。 该文件是执行P...

棋帅小七 ⋅ 2017/09/20 ⋅ 0

Power2php

Power2php 是一个简单(非常的),开源,易扩展(升级),高效,面向对象的轻量级PHP MVC开发框架。Power2php的特点如下: 简单,将是你见过最简单的Framework,核心代码只有十几行 基于页面URL和表单...

匿名 ⋅ 2008/11/18 ⋅ 0

PHP5中PDO的简单使用

PDO(PHP Data Object) 是PHP 5新出来的东西,在PHP 6都要出来的时候,PHP 6只默认使用PDO来处理数据库,将把所有的数据库扩展移到了PECL,那么默认就是没有了我们喜爱的php_mysql.dll之类的了...

Junn ⋅ 2012/09/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从零开始搭建Risc-v Rocket环境---(1)

为了搭建Rocke环境,我买了一个2T的移动硬盘,安装的ubuntu-16.04 LTS版。没有java8,gcc是5.4.0 joe@joe-Inspiron-7460:~$ java -version程序 'java' 已包含在下列软件包中: * default-...

whoisliang ⋅ 28分钟前 ⋅ 0

大数据学习路线(自己制定的,从零开始学习大数据)

大数据已经火了很久了,一直想了解它学习它结果没时间,过年后终于有时间了,了解了一些资料,结合我自己的情况,初步整理了一个学习路线,有问题的希望大神指点。 学习路线 Linux(shell,高并...

董黎明 ⋅ 34分钟前 ⋅ 0

systemd编写服务

一、开机启动 对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件。 如果你想让该软件开机启动,就执行下面的命令(以httpd.service为例)。 ...

勇敢的飞石 ⋅ 36分钟前 ⋅ 0

mysql 基本sql

CREATE TABLE `BBB_build_info` ( `community_id` varchar(50) NOT NULL COMMENT '小区ID', `layer` int(11) NOT NULL COMMENT '地址层数', `id` int(11) NOT NULL COMMENT '地址id', `full_......

zaolonglei ⋅ 45分钟前 ⋅ 0

安装chrome的vue插件

参看文档:https://www.cnblogs.com/yulingjia/p/7904138.html

xiaoge2016 ⋅ 48分钟前 ⋅ 0

用SQL命令查看Mysql数据库大小

要想知道每个数据库的大小的话,步骤如下: 1、进入information_schema 数据库(存放了其他的数据库的信息) use information_schema; 2、查询所有数据的大小: select concat(round(sum(da...

源哥L ⋅ 今天 ⋅ 0

两个小实验简单介绍@Scope("prototype")

实验一 首先有如下代码(其中@RestController的作用相当于@Controller+@Responsebody,可忽略) @RestController//@Scope("prototype")public class TestController { @RequestMap...

kalnkaya ⋅ 今天 ⋅ 0

php-fpm的pool&php-fpm慢执行日志&open_basedir&php-fpm进程管理

12.21 php-fpm的pool pool是PHP-fpm的资源池,如果多个站点共用一个pool,则可能造成资源池中的资源耗尽,最终访问网站时出现502。 为了解决上述问题,我们可以配置多个pool,不同的站点使用...

影夜Linux ⋅ 今天 ⋅ 0

微服务 WildFly Swarm 管理

Expose Application Metrics and Information 要公开关于我们的微服务的有用信息,我们需要做的就是将监视器模块添加到我们的pom.xml中: 这将使在管理和监视功能得到实现。从监控角度来看,...

woshixin ⋅ 今天 ⋅ 0

java连接 mongo伪集群部署遇到的坑

部署mongo伪集群 #创建mongo数据存放文件地址mkdir -p /usr/local/config1/datamkdir -p /usr/local/config2/data mkdir -p /usr/local/config3/data mkdir -p /usr/local/config1/l......

努力爬坑人 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部