数据库抽象层PDO

数据库抽象层PDO(PHP Date Object 缩写)

通过一致的函数执行查询和获取数据,简化数据库操作,屏蔽不同数据库之间的差异,方便移植。

PDO安装

一定确保php配置文件中激活了扩展模块,编辑php.ini文件


extension=php_pdo.dll //所有PDO 驱动程序共享的扩展,必须有

//使用什么数据看就激活哪一个

extention=php_pdo_mysql.dll //MySQL

extention=php_pdo_odbc.dll //ODBC

extention=php_pdo_mssql.dll //SQL Server

extention=php_pdo_oci.dll //Oracle


重启web服务器,使用phpinfo() 函数 查看


创建PDO对象


方法一:
将参数嵌入到构造函数中
<?php
	$dsn ='mysql:host=localhost;dbname=bookstore';//注:之间不要有多余的空格
	$user = 'root';
	$password = '1234567';

	try {
		$dbh = new PDO($dsn,$user,$password);
		echo '连接成功!'.'<br>';
	} catch (PDOException $e) {
		echo '连接数据库失败:'.$e->getMessage().'<br>';
		exit();
	}

?>


方法二:
将参数存放在文件中

方法三:
引用php.ini 文件

使用持久连接时,PHP会把MySQL服务器的一个进程创建的新旧两个连接合并共享为一个连接


使用PDO对象

getAttribute() //获取一个数据库连接对象的属性
setAttribute() //为一个数据库连接对象设定属性

使用PDO执行SQL语句

1.使用PDO::exec() 方法
可执行insert 、update 和 delete 等
<?php
	$dsn ='mysql:host=localhost;dbname=bookstore';//注:之间不要有多余的空格
	$user = 'root';
	$password = '1234567';

	try {
		$dbh = new PDO($dsn,$user,$password);
		echo '连接成功!'.'<br>';
	} catch (PDOException $e) {
		echo '连接数据库失败:'.$e->getMessage().'<br>';
		exit();
	}
<span style="white-space:pre">	</span>$insertdata = "insert into books (bookName,publisher,price) values ('计算机网络','电子工业出版社','28')";
	$affected = $dbh->exec($insertdata);
	if ($affected) {
		echo '数据表book受影响的行数为:'.$affected.'<br>';
	}else{
		print_r($dbh->errorInfo());
	}
?>
2.使用PDO::query() 方法
返回一个PDOstatement 对象,可使用对象中的rowCount() 方法影响到的行数
<?php
//数据库抽象层PDO (PHP Data Object)
	$dsn ='mysql:host=localhost;dbname=bookstore';
	$user = 'root';
	$password = '1234567';

	try {
		$dbh = new PDO($dsn,$user,$password);
		echo '连接成功!'.'<br>';
	} catch (PDOException $e) {
		echo '连接数据库失败:'.$e->getMessage().'<br>';
		exit();
	}
<span style="white-space:pre">	</span>//使用PDO::query()方法
	$selectdata = "select bookName,publisher,price from books where publisher='电子工业出版社'";
	try{
		$pdostatement = $dbh->query($selectdata);
		echo '一共从表中获取到'.$pdostatement->rowCount().'条记录:<br>';
		foreach ($pdostatement as $row) {
			echo $row['bookName']."\t";
			echo $row['publisher']."\t";
			echo $row['price']."\t";
			echo '<br>';
		} 
	}catch (PDOException $e){
			echo $e.getMessage();
			print_r($dbh->errorInfo());
	}
?>
3.PDO预处理语句
在PDO中有两种占位符的语法:“命名参数”和“问号参数”
命名参数:
$query = "insert into books (bookName,publisher,price) values (:bookname,:bookpublisher,:bookprice)";
$stmt = $dbh->prepare($query);
问号参数:
$query = "insert into books (bookName,publisher,price) values (?,?,?)";
$stmt = $dbh->prepare($query);

绑定参数bindParam() 
把参数绑定到准备好的语句的占位符上
$bookName = "div+css";
$publisher = "机械电子出版社";
$price = 66;
//绑定参数
echo '绑定参数'.'<br>';
$stmt->bindParam(':bookName',$bookName,PDO::PARAM_STR);
$stmt->bindParam(':bookpublisher',$publisher,PDO::PARAM_STR);
$stmt->bindParam(':bookprice ',$price ,PDO::PARAM_STR);

执行准备好的查询
$stmt->execute();

4.获取数据
fetch()  获取当前行记录
fetchAll() 获取整个结果集
setFetchMode() 方法 设置fetch()和fetchAll()方法以什么方式返回结果集
bindColumn() 方法  将一个列和一个指定的变量名绑定









你可能感兴趣的:(数据库抽象层PDO)