PDO连接数据库

来源:互联网 发布:centos教程 编辑:程序博客网 时间:2024/05/29 16:35
<?php
//第一种方法
$dsn='mysql: host=localhost; dbname=mysql';
$user='root';
$pass='root';
 try{
$pdo = new PDO($dsn,$user,$pass,array(PDO::ATTR_PERSISTENT => true));
$pdo->query('set names utf8;');
//现在运行完成,在此关闭连接
//$pdo=null;
//catch部分是处理连接错误的
}catch(PDOException $e){
die("Error!:".$e->getMessage()."<br />");
}  
a)详解
许多Web应用会因为使用了向数据库的持久连接而得到优化。持久连接不会在脚本结束时关闭,
相反它会被缓存起来并在另一个脚本通过同样的标识请求一个连接时得以重新利用。
持久连接的缓存可以使你避免在脚本每次需要与数据库对话时都要部署一个新的连接的资源消耗,让你的Web应用更加快速。
上面实例中的array(PDO::ATTR_PERSISTENT => true)就是把连接类型设置为持久连接。


//你还可以进行一次搜索操作
$db=$pdo->query('select * from administrator');

foreach($db as $row){
print_r($row);
}  

//第二种方法
$dbms='mysql';
$host='localhost';
$dbName='mysql';
$user='root';
$pass='root';
$dsn="$dbms:host=$host;dbname=$dbName";

 try{
$pdo = new PDO($dsn,$user,$pass);
}catch(PDOException $e){
die("Error!:".$e->getMessage()."<br />");
}  


foreach($pdo->query('select * from administrator') as $row){

print_r($row); 

}



//持久化连接
$pdo = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));




详解b) PDO中的事务
PDO->beginTransaction(),PDO->commit(),PDO->rollBack()这三个方法是在支持回滚功能时一起使用的。PDO->beginTransaction()方法标明起始点,PDO->commit()方法标明回滚结束点,并执行SQL,PDO->rollBack()执行回滚。


 try {
$dbh = new PDO('mysql:host=localhost;dbname=test', ‘root', ”);
$dbh->query('set names utf8;');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->beginTransaction();
$dbh->exec(”INSERT INTO `test`.`table` (`name` ,`age`)VALUES ('mick', 22);”);
$dbh->exec(”INSERT INTO `test`.`table` (`name` ,`age`)VALUES ('lily', 29);”);
$dbh->exec(”INSERT INTO `test`.`table` (`name` ,`age`)VALUES ('susan', 21);”);
$dbh->commit();
}catch (Exception $e) {
$dbh->rollBack();
echo “Failed: ” . $e->getMessage();

























 ?>