发姐陈一发儿最牛b歌词:网友问“约”好不好,发姐是这么回答的

之前一段时间,开始了php的研究,看了关于PDO的一些资料,发现不错,整理和总结一下,作为开发笔记,留待日后使用,《PHP开发笔记系列(一)-PDO使用》。 PDO是PHP Data Objects的简称,是一种数据库访问抽象层。PDO是用于多种数据库的一致接口。类比的说,PDO做的事情类似于JAVA中的持久层框架(Hibernate、OpenJPA)的功能,为异构数据库提供一个统一的编程接口,这样就不必再使用mysql_*、pg_*这样的函数,也不必再写自己的"GenericDAO"了。PDO在PHP5.1的时候一起发布,所以我们用的PHP5.2、PHP5.3都已经可以使用。 为了方便,我们使用MySQL5来做演示。0. 建立实验环境数据库及相关表CREATE TABLE `blog` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=latin11. 使用PDO访问数据库 通过PDO访问数据库的步骤是:a)指定dsn、username、password,b)通过#a中的设置构造PDO对象,代码如下:file:pdo-access.phpurl:http://localhost:88/pdo/pdo-access.php&?php// 设置dsn、username、passwd$dsn = 'mysql:host=dbname=pdotest';$username = 'root';$passwd = 'password';// 构造PDO对象try {$dbh = new PDO($dsn, $username, $passwd);echo 'connect to database successfully!';} catch (Exception $e) {echo 'Fail to connect to database!/n';echo $e-&getMessage();}?& 备注:DSN即Data Source Name-数据源名称,提供数据库的连接信息,包括三部分,PDO驱动名称(MySQL、SQLite、PostgreSQL等)、冒号和驱动特定的语法。但是一般情况下,我们都很难记住这些,可以下载个php manual查,也可以到php的官网查。2. 使用Query方法查询数据 在#1的基础上,连接数据库成功后,构造SQL语句,调用query方法返回结构数组,通过foreach进行数据结果遍历,代码如下:file:pdo-query.phpurl:http://localhost:88/pdo/pdo-query.php?title=title1&?php
$dsn = 'mysql:host=dbname=pdotest';
$username = 'root';
$passwd = 'password';
$dbh = new PDO($dsn, $username, $passwd);
echo 'connect to database successfully!'."/r/n";
$title = 'title1';
// 构造SQL语句
$sql = "SELECT * FROM blog WHERE title = '".$title."'";
// 执行查询并遍历结果
foreach ($dbh-&query($sql) as $row){
print $row['id']."/t";
print $row['title']."/t";
} catch (PDOException $e) {
echo 'Errors occur when query data!/n';
echo $e-&getMessage();
}?& 备注:一般情况下, 通过构造SQL语句的方法来进行query、update、insert、delete,都会需要指定where条件,因此不可避免的需要防止SQL注入的问题出现。 例如,正常情况下,当用户输入“title1”时,我们构造的sql语句会是SELECT * FROM blog WHERE,但是对SQL比较熟悉的用户会输入'OR id LIKE '%,此时我们构造的SQL就会变成SELECT * FROM blog where OR id LIKE '%',这样整张blog 表中的数据都会被读取,因此需要避免,所以需要用到quote方法,把所有用户提供的数据进行转移,从而防止SQL注入的发生。使用quote方法后的sql为$sql = "SELECT * FROM blog WHERE title = ".$dbh-&quote($title),转移出来后的sql是SELECT * FROM blog WHERE title = '/'OR id LIKE /'%',把所有的单引号(')都转移了。3. 使用prepare和execute方法查询数据 如果我们用到的SQL查询是使用频率不高的查询,那么使用query或prepare和execute方法来查询都无太大差别,查询速度也不会差太远。两者不同的是,使用query时,php向数据库发送的sql,每执行一次都需要编译一次,而使用prepare和execute方法,则不需要,因此做大并发量的操作时,使用prepare和execute方法的优势会更加明显。 使用prepare和execute方法的步骤不多,a)构造SQL,b)将SQL传入PDO-&prepart方法,得到一个PDOStatement对象,3)调用PDOStatement对象的execute方法,4)通过PDOStatement-&fetch或PDOStatement-&fetchObject遍历结果集。代码如下:file:pdo-prepare-fetch.phpurl:http://localhost:88/pdo/pdo-prepare-fetch.php?title=title1&?php
$dsn = 'mysql:host=dbname=pdotest';
$username = 'root';
$passwd = 'password';
// 从请求获取title参数值
$title = $_GET['title'];
$dbh = new PDO($dsn, $username, $passwd);
echo 'connect to database successfully!'."&br/&";
// 构造SQL语句,使用绑定变量
$sql = "SELECT * FROM blog WHERE title = :title";
// 编译SQL
$stmt = $dbh-&prepare($sql);
// 为绑定变量赋值
$stmt-&bindParam(":title", $title, PDO::PARAM_STR);
// 执行SQL
$stmt-&execute();
// 以联合数组方式获取结果,并遍历结果
while ($row = $stmt-&fetch(PDO::FETCH_ASSOC)) {
print $row['id']."/t";
print $row['title']."/t";
} catch (PDOException $e) {
echo 'Errors occur when query data!/n';
echo $e-&getMessage();
}?& 除了使用上面的PDO::FETCH_ASSOC返回联合数组外,还可以使用fetchObject方法,返回结果集对象,代码如下:file:pdo-prepare-fetch-object.phpurl:http://localhost:88/pdo/pdo-prepare-fetch-object.php?title=title1&?php
$dsn = 'mysql:host=dbname=pdotest';
$username = 'root';
$passwd = 'password';
$title = $_GET['title'];
$dbh = new PDO($dsn, $username, $passwd);
echo 'connect to database successfully!'."&br/&";
$sql = "SELECT * FROM blog WHERE title = :title";
$stmt = $dbh-&prepare($sql);
$stmt-&bindParam(":title", $title, PDO::PARAM_STR);
$stmt-&execute();
// 以对象数组方式获取结果,并遍历结果
while ($row = $stmt-&fetchObject()) {
print $row-&id."/t";
print $row-&title."/t";
} catch (Exception $e) {
echo 'Errors occur when query data!/n';
echo $e-&getMessage();
}?&4. 设置PDO的错误级别 PDO的错误级别分成PDO::ERRMODE_SILENT(默认)、PDO::ERRORMODE_WARNING、PDO::ERRORMODE_EXCEPTION三种。 PDO::ERRMODE_SILENT级别,当出现错误时,会自动设置PDOStatement对象的errorCode属性,但不进行任何其他操作,因此需要我们手工检查是否出现错误(使用empty($stmt-&errorCode())),否则程序将继续走下去。 PDO::ERRORMODE_WARNING级别,基本与PDO::ERRMODE_SILENT一致,都是需要使用empty($stmt-&errorCode())手工检查。 只需要在创建PDO对象后,加入以下代码即可:$dbh-&setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);或$dbh-&setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); PDO::ERRORMODE_WARNING级别,当出现错误时,系统将抛出一个PDOException,并设置errorCode属性,程序可以通过try{...}catch{...}进行捕捉,否则未catch的exception会导致程序中断,加入以下代码即可:$dbh-&setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);&?php
} catch (Exception $e) {
echo 'Errors occur when operation!'."&br/&";
// 获取Exception信息
echo $e-&getMessage()."&br/&";
// 获取错误码
echo $e-&getCode()."&br/&";
// 获取出错文件名
echo $e-&getFile()."&br/&";
// 获取出错行
echo $e-&getLine()."&br/&";
// 把异常以字符串返回
echo $e-&getTraceAsString();
}?&5. 使用prepare和execute方法插入/更新数据 方法和#3中进行查询的差不多,只是构造的SQL语句是insert语句或update语句,代码如下:file:pdo-prepare-insert.phpurl:http://localhost:88/pdo/pdo-insert.php?title=title11&?php
$dsn = 'mysql:host=dbname=pdotest';
$username = 'root';
$passwd = 'password';
$title = $_GET['title'];
$dbh = new PDO($dsn, $username, $passwd);
$dbh-&setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo 'connect to database successfully!'."&br/&";
// 构造Insert语句
$sql = "INSERT INTO blog(title) VALUES(:title)";
$stmt = $dbh-&prepare($sql);
$stmt-&bindParam(":title", $title);
$stmt-&execute();
} catch (Exception $e) {
echo 'Errors occur when query data!/n';
echo $e-&getMessage();
}?&file:pdo-prepare-update.phpurl:http://localhost:88/pdo/pdo-update.php?id=1&title=title12&?php
$dsn = 'mysql:host=dbname=pdotest';
$username = 'root';
$passwd = 'password';
$id = $_GET['id'];
$title = $_GET['title'];
$dbh = new PDO($dsn, $username, $passwd);
$dbh-&setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo 'connect to database successfully!'."&br/&";
// 构造update语句
$sql = "UPDATE blog SET title=:title where id=:id";
$stmt = $dbh-&prepare($sql);
$stmt-&bindParam(":id", $id);
$stmt-&bindParam(":title", $title);
$stmt-&execute();
} catch (Exception $e) {
echo 'Errors occur when query data!/n';
echo $e-&getMessage();
}?&6. 获取返回的行数 使用#3中的prepare和execute方法,然后将sql语句改成count的,例如SELECT COUNT(id) FROM article ...,代码如下:file:pdo-prepare-fetch-column.phpurl:http://localhost:88/pdo/pdo-prepare-fetch-column.php?id=1&title=title12&?php
$dsn = 'mysql:host=dbname=pdotest';
$username = 'root';
$passwd = 'password';
$dbh = new PDO($dsn, $username, $passwd);
$dbh-&setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
echo 'connect to database successfully!'."&br/&";
// 构造count语句
$sql = "SELECT COUNT(id) FROM blog";
$stmt = $dbh-&prepare($sql);
$stmt-&execute();
// 使用fetchColumn获取0列值
echo $stmt-&fetchColumn()." rows returned!";
} catch (Exception $e) {
echo 'Errors occur when query data!/n';
echo $e-&getMessage();
}?&7. 获取受影响的行数 使用#3中的prepare和execute方法,然后将SQL语句改成insert、update、delete语句即可,代码如下:file:pdo-prepare-row-count.phpurl:http://localhost:88/pdo/pdo-prepare-row-count.php?id=1&?php
$dsn = 'mysql:host=dbname=pdotest';
$username = 'root';
$passwd = 'password';
$id = $_GET['id'];
$dbh = new PDO($dsn, $username, $passwd);
$dbh-&setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
echo 'connect to database successfully!'."&br/&";
$sql = "DELETE FROM blog WHERE id=:id";
$stmt = $dbh-&prepare($sql);
$stmt-&bindParam(":id", $id);
$stmt-&execute();
// 获取update、insert、delete操作后影响的行数
echo $stmt-&rowCount()." rows affected!";
} catch (Exception $e) {
echo 'Errors occur when data operation!/n';
echo $e-&getMessage();
}?&8. 获得新插入行的ID值 为数据库表插入新数据行时,我们需要获得刚刚插入的新行的ID值,此时我们需要使用到PDO的lastInsertId()方法,代码如下:file:pdo-prepare-last-insertid.phpurl:http://localhost:88/pdo/pdo-prepare-last-insertid.php?title=title13&?php
$dsn = 'mysql:host=dbname=pdotest';
$username = 'root';
$passwd = 'password';
$title = $_GET['title'];
$dbh = new PDO($dsn, $username, $passwd);
$dbh-&setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo 'connect to database successfully!'."&br/&";
$sql = "INSERT INTO blog(title) VALUES(:title)";
$stmt = $dbh-&prepare($sql);
$stmt-&bindParam(":title", $title);
$stmt-&execute();
// 获取上一个之行的insert语句插入的数据的id值
echo $dbh-&lastInsertId();
} catch (Exception $e) {
echo 'Errors occur when query data!/n';
echo $e-&getMessage();
}?&9. 使用PDO进行事务管理 事务是进行程序开发时,保证数据ACID(可分性、一致性、独立性、持久性)的工具。要不全部成功,要不全部不成功,这样才能保证关联数据的保存能够达到预期的目的。下面使用PDO的Transaction来进行实验,进行多比数据插入,开启事务,第一句sql是可以正常插入,第二句sql插入出错,检查是否rollback。file:pdo-prepare-transaction.phpurl:http://localhost:88/pdo/pdo-prepare-transaction.php&?php
$dsn = 'mysql:host=dbname=pdotest';
$username = 'root';
$passwd = 'password';
$dbh = new PDO($dsn, $username, $passwd);
$dbh-&setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo 'connect to database successfully!'."&br/&";
// 开启事务
$dbh-&beginTransaction();
$sql = "INSERT INTO blog(title) VALUES(:title)";
$stmt = $dbh-&prepare($sql);
$stmt-&execute(array(':title'=&'insert title1'));
$stmt-&execute(array(':title'=&NULL));
// 提交事务
$dbh-&commit();
} catch (Exception $e) {
echo 'Errors occur when data operation!/n';
echo $e-&getMessage();
// 回滚事务
$dbh-&rollBack();
}?&10. 使用PDO进行数据库备份 使用system函数,将我们构造的mysqldump命令传入即可。下面为了演示,只做了简单的调用。file:pdo-backup.phpurl:http://localhost:88/pdo/pdo-backup.php&?php
$username="root";
$passwd="password";
$dbname="pdotest";
$file='d:/'.$dbname.'.sql';
// 构造备份命令
$cmd = "mysqldump -u".$username." -p".$passwd." ".$dbname." &".$
// 执行备份命令
system($cmd,$error);
if($error){
trigger_error("backup failed".$error);
}?& 采用工厂模式:file:AbstractMySQLDump.php&?php
require_once 'MySQLDump_Win.php';
abstract class AbstractMySQLDump {
protected $
abstract function __construct($username, $passwd, $dbname, $file);
// 依据操作系统类型,使用工厂方法构造备份类
public static function factory($username, $passwd, $dbname, $file){
if(strtoupper(substr(PHP_OS, 0, 3))==='WIN'){
return new MySQLDump_Win($username, $passwd, $dbname, $file);
implement MySQLDump_NIX($username, $passwd, $dbname, $file);
// 备份逻辑
public function backup(){
system($this-&cmd, $error);
// 判断是否出错及出错逻辑
if($error){
trigger_error("backup failure! command:".$this-&cmd." Error:".$error);
}?&file:MySQLDump_Win.php&?php
class MySQLDump_Win extends AbstractMySQLDump {
// 覆盖父类的构造方法
public function __construct($username, $passwd, $dbname, $file){
$this-&cmd = "mysqldump -u".$username." -p".$passwd." ".$dbname." & ".$
}?&file:MySQLDumpTest.phpurl:http://localhost:88/pdo/MySQLDumpTest.php&?php
require_once 'AbstractMySQLDump.php';
$username = "root";
$passwd = "password";
$dbname = "pdotest";
$file = "d:/".$dbname.".sql";
// 使用工厂方法生成备份类
$dump = AbstractMySQLDump::factory($username, $passwd, $dbname, $file);
// 执行备份类的backup方法
$dump-&backup(); ?& 本文地址: http://ryan-/blog/1543225
pdo.zip (7.3 KB)
下载次数: 18
&函数式swift&读书笔记之Tri
最新教程周点击榜
6读书笔记之Trie结构
微信扫一扫不要在PHP中打开PDO的SQL连接都必须被关闭-php,sql,mysql,pdo-CodeGo.net
不要在PHP中打开PDO的SQL连接都必须被关闭
当我打开一个PHP MySQL连接只有PHP的内置的MySQL函数,我请执行以下操作:
$link = mysql_connect($servername, $username, $password);
mysql_select_db($dbname);
//queries etcetera
mysql_close($link);
当我打开与PDO的连接,它看起来像这样:
$link = new PDO("mysql:dbname=$host=$servername",$username,$password);
//prepare statements, perform queries
我必须明确地关闭连接像我这样做有mysql_connect()和mysql_close()?如果不是,请问PHP知道当我与我的连接我做了什么?
本文地址 :CodeGo.net/61869/
-------------------------------------------------------------------------------------------------------------------------
1. 使用$link = null让PDO知道它可以关闭连接。
PHP:PDO连接和连接
当连接到数据库,PDO类的一个实例返回到你的脚本。连接保持活动的该PDO的对象。要关闭连接,你需要通过确保将其所有剩余的引用被删除销毁对象-你这样做通过指定NULL来保存该对象的变量。如果你没有明确做到这一点,PHP会自动关闭连接时,你的脚本结束。
当PHP脚本执行完毕后关闭所有连接,也不必显式地关闭与则mysql_close您的连接()
PDO不提供关于它自己的这种函数。通过PDO连接通过PDO对象的引用计数在PHP中是间接管理。
但你仍要关闭连接,无论引用计数的。要么你无法控制它 CodeGo.net,需要它用于测试目的或类似。
您可以通过运行一个SQL查询关闭与PDO MySQL连接。即能连接到MySQL服务器能够KILL至少它自己的线程:
* Close Mysql Connection (PDO)
$pdo_mysql_close = function (PDO $connection) {
$query = 'SHOW PROCESSLIST -- ' . uniqid('pdo_mysql_close ', 1);
$list = $connection-&query($query)-&fetchAll(PDO::FETCH_ASSOC);
foreach ($list as $thread) {
if ($thread['Info'] === $query) {
return $connection-&query('KILL ' . $thread['Id']);
$pdo_mysql_close($conn);
相关的Mysql
13.7.5.30。SHOW PROCESSLIST句法
13.7.6.4。KILL句法
相关StackOverflow的问题:
PHP中的PDO close()方法? (2012年7月)
您也可以限制你的连接中的本地函数。这样的连接是尽快关闭的函数
从我收集我看不出反正来关闭它在手动和脚本我赶紧看了看例子永远闭上从我能看到的反正连接。
以及看到的$link为PDO被分配一个对象,PHP将设置为空,一旦脚本运行,以便它不再是一个对象。因此,你可能只是做:
$link = new PDO("mysql:dbname=$host=$servername",$username,$password);
//prepare statements, perform queries
本文标题 :不要在PHP中打开PDO的SQL连接都必须被关闭
本文地址 :CodeGo.net/61869/
Copyright (C) 2017 CodeGo.netphp连接mysql数据库的几种方式(mysql、mysqli、pdo)-mysql教程-数据库-壹聚教程网php连接mysql数据库的几种方式(mysql、mysqli、pdo)
php与mysql的连接有三种API接口,分别是:PHP的MySQL扩展 、PHP的mysqli扩展 、PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案。
一、特性及对比
PHP的MySQL扩展是设计开发允许PHP应用与MySQL交互的早期扩展。mysql扩展提供了一个面向过程 的接口,并且是针对MySQL4.1.3或更早版本设计的。因此,这个扩展虽然可以与MySQL4.1.3或更新的服务端 进行交互,但并不支持后期MySQL服务端提供的一些特性。由于太过古老,又不安全,所以已被后来的mysqli完全取代。
PHP的mysqli扩展,我们有时称之为MySQL增强扩展,可以用于使用 MySQL4.1.3或更新版本中新的高级特性。其特点为:面向对象接口 、prepared语句支持、多语句执行支持、事务支持 、增强的调试能力、嵌入式服务支持 、预处理方式完全解决了的问题。不过其也有缺点, 就是只支持mysql数据库。如果你要是不操作其他的数据库,这无疑是最好的选择。
PDO是PHP Data Objects的缩写,其是PHP应用中的一个数据库抽象层规范。PDO提供了一个统一的API接口可以使得你的PHP应用不去关心具体要 连接的数据库服务器系统类型。也就是说,如果你使用PDO的API,可以在任何需要的时候无缝切换数据库服务器,比如从oracle 到MySQL,仅仅需要修改很少的PHP代码。其功能类似于JDBC、ODBC、DBI之类接口。同样,其也解决了sql注入问题,有很好的安全性。不过他也有缺点,某些多语句执行查询不支持(不过该情况很少)。
官文对于三者之间也做了列表性的比较:
PHP的mysqli扩展
PDO (使用PDO MySQL驱动和MySQL Native驱动)
PHP的mysql扩展
引入的PHP版本
PHP5.x是否包含
MySQL开发状态
在PHP5.3中活跃
在MySQL新项目中的建议使用程度
建议 - 首选
API的字符集支持
服务端prepare语句的支持情况
客户端prepare语句的支持情况
存储过程支持情况
多语句执行支持情况
是否支持所有MySQL4.1以上功能
从官方给出的这份结果上来看,优先推荐msqli,其次是pdo 。而&民间&给出的结果很多是倾向于使用PDO,因为其不担有跨库的优点,更有读写速度快的特点。
二、模块安装及调用
以ubuntu及其衍生版为例,通过sudo apt-get install mysqlnd 即可增加php对pdo和mysqli的支持(源码安装的可以选择phpize程序进行动态扩展)。具体可以通过phpinfo页面打开查看,其中在mysqlnd项下,可以看到如下内容:
API Extensions &mysql,mysqli,pdo_mysql
mysqli和PDO连接方法
$pdo = new PDO(&mysql:host=dbname=database&, 'username', 'pass');
// mysqli, 面向过程方式
$mysqli = mysqli_connect('localhost','username','password','database');
// mysqli, 面向对象
$mysqli = new mysqli('localhost','username','password','database');
mysqli通过配置文件进行查询的示例:
/var/www/t$ cat config.ini.php
& $dbhost =&localhost&;
& $dbuser = &root&;
& $dbpwd = &123456&;
& $dbname = &wish&;
& $charName = &utf8&;
/var/www/t$ cat mysqlquery.php
require_once(&config.ini.php&);
$mysqliObj = new mysqli($dbhost,$dbuser,$dbpwd,$dbname);
if(mysqli_connect_errno()){
&echo &连接失败&.mysqli_connect_error();
//printf(&Connect failed: %sn&, mysqli_connect_error());
&exit(); //www.111cn.net
&&& $sql=& * from wp_wish&;
&&& $mysqliObj-&query(&set names $charName&);
&&& //3、处理结果
&&& $res= $mysqliObj-&query($sql);
&&& //var_dump($res);
&&& //fetch_assoc fetch_array fetch_object
&&& while($row=$res-&fetch_row()){
&//&&&&&& print_r($row);
&&&&&&& ($row as $val){
&&&&&&&&&&& echo '--'.$
&&&&&&& echo '&br/&';
&&& //4、关闭资源
&&& $res-&free();
&&& $mysqliObj-&close();
pdo方式进行的查询
$dsn = 'mysql:dbname=host=127.0.0.1';
$user = 'root';
$password = '1';
$dbh = new PDO($dsn, $user, $password);
$dbh-&setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$r = $dbh-&query('SELECT * FROM user');
var_dump($r);
foreach($r as $v) {
&&& var_dump($v);
像discuz、phpcms、akcms等程序一般都会提供两种连接方式mysqli或pdo-mysql(前提是你的部署环境要支持),具体在使用到类以于以上的php程序时,可以根据自己的情况而定
上一页: &&&&&下一页:相关内容PDO连接数据库类——封装PDO数据库连接
本文所属图书&>&
本书是一本PHP综合查询参考手册,包含PHP Web开发中应用的各种语句、函数、类及其方法。本书分为5篇,共30章。第一篇是PHP基础篇,其中包括语句、经典类、数组函数库、类和对象函数库、日期时间函数库;第二篇是...&&
PDO与 5.1版本一起发行,目前支持的包括Firebird、FreeTDS、Interbase、MySQL、MS SQL Server、ODBC、、Postgre SQL、SQLite和。有了PDO,你不必再使用_*函数、oci_*函数或者_*函数,只需要使用PDO接口中的方法就可以对进行操作。在选择不同的数据库时,只需修改PDO的DSN(数据源名称)。这里将通过PDO连接不同数据库的方法进行了封装。
/************************************************
&* @ 说明:PDO连接数据库类
* @ 作者:明日科技
&* @ 学习社区:
&* @ E-mail:
************************************************/
class ConnDB{
&& * @ 方法说明:
&& *&& 构造方法,类的初始化
&& * @ 参数说明:
&& *&& $dbtype:连接数据库的类型
&& *&& $host:数据库服务器主机名或IP地址
&& *&& $user:用户名
&& *&& $pwd:密码
&& *&& $dbname:数据库名称
&&function ConnDB($dbtype,$host,$user,$pwd,$dbname){
&&&$this-&dbtype=$
&&& &&$this-&host=$
&&&$this-&user=$
&&&$this-&pwd=$
&&&$this-&dbname=$
&& * @ 方法说明:
&& *&& 获取数据库连接ID
&&& function GetConnId(){
&&&if($this-&dbtype==&& || $this-&dbtype==&&){
&&&&&&&&&&&//判断数据库的类型,根据类型定义DSN的值
&&& &&&$dsn=&$this-&dbtype:host=$this-&dbname=$this-&dbname&;
&&&&$dsn=&$this-&dbtype:dbname=$this-&dbname&;
&&& &&&$conn = new PDO($dsn, $this-&user, $this-&pwd); &
&&&&&&&&&&&//初始化PDO对象,创建数据库连接对象$pdo
&&&&$conn-&query(&set names utf8&);&//设置编码格式
&&& &&&return $&&&&&//返回数据库连接标识
&&&} catch (PDOException $e) {
&&& &&&die (&Error!: & . $e-&getMessage() . &&br/&&);
示例& 通过PDO连接MySQL数据库,数据库名称为db_database02,用户名为root,密码为111。首先,封装PDO连接数据库类于system.class.inc.php。然后,创建system.inc.php文件,载入system.class.inc.php文件,实例化数据库连接类ConnDB,返回连接标识$conn。system.inc.php文件的代码如下:
require(&system.class.inc.php&);&&&&&&//包含数据库连接和操作类
$connobj=new ConnDB(&mysql&,&localhost&,&root&,&111&,& db_database02&);
&&&&&&&&&&&&&&//数据库连接类实例化
$conn=$connobj-&GetConnId();&&&&&&&//执行连接操作,返回连接标识
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。}

我要回帖

更多关于 发姐陈一发儿最牛b歌词 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信