PDO+Access[密码] PDO+Mysql PHP PDO数据库驱动 常用操作 高性能 切换库
博客专区 > let 的博客 > 博客详情
PDO+Access[密码] PDO+Mysql PHP PDO数据库驱动 常用操作 高性能 切换库
let 发表于4年前
PDO+Access[密码] PDO+Mysql PHP PDO数据库驱动 常用操作 高性能 切换库
  • 发表于 4年前
  • 阅读 628
  • 收藏 2
  • 点赞 1
  • 评论 3

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: PDO+Access[密码] PDO+Mysql PHP PDO数据库驱动 常用操作 高性能 切换库
<?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 ) );




共有 人打赏支持
粉丝 138
博文 66
码字总数 75584
评论 (3)
月影又无痕
使用你这个类,局限性就是只能使用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)

let

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

使用你这个类,局限性就是只能使用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是本地数据库,我只是临时拿来搞下的
上面想扩展很容易吧?
初学小生
不错支持
×
let
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: