1、自从php5.1.0开始,pdo成为默认组件,查看更多pdo驱动http://php.net/manual/zh/pdo.drivers.php;
2、linux下需要开启配置extension=pdo.so,Windows下则开启extendion=php_pdo.dll
在php5.3以后,pdo自动开启;
3、主要涉及的pdo驱动
extension=php_pdo.dll extension=php_pdo_firebird.dll extension=php_pdo_informix.dll extension=php_pdo_mssql.dll extension=php_pdo_mysql.dll extension=php_pdo_oci.dll extension=php_pdo_oci8.dll extension=php_pdo_odbc.dll extension=php_pdo_pgsql.dll extension=php_pdo_sqlite.dll
4、连接到mysql(处理连接错误方式)、预处理方式
<?php $arr = array( PDO::ATTR_PERSISTENT =>true //持久连接 ); try { $dbh = new PDO('mysql:host=localhost;dbname=test', 'root', 'root',$arr); } catch (PDOException $e) { print $e->getMessage(); die(); } //预处理操作 $pre = $dbh->prepare('insert into table(name, age,sex) values(?, ?, ?)); //预处理绑定参数 $pre->bindParam(1, $name, PDO::PARAM_STR); $pre->bindParam(2, $age, PDO::PARAM_INT,3); $pre->bindParam(3, $sex, PDO::PARAM_STR,2); $name = ansion; $age = 20; $sex = '男'; $pre->execute(); //执行
5、PDO数据库事务处理
通俗的理解,事务即是一批数据处理语句“积蓄”起来同时生效,同时失效。
引文:
在下面例子中,假设为新员工创建一组条目,分配一个为23的ID。除了登记此人的基本数据之外,还需要记录他的工资。两个更新分别完成起来很简单,但通过封闭在 PDO::beginTransaction() 和PDO::commit() 调用中,可以保证在更改完成之前,其他人无法看到这些更改。如果发生了错误,catch 块回滚自事务启动以来发生的所有更改,并输出一条错误信息。
<?php try { $dbh = new PDO('mysql:host=localhost;dbname=ansion_blog', 'root', 'root', array(PDO::ATTR_PERSISTENT => true)); echo 'connected'; } catch (Expection $e){ die($e->getMessage()); } try { //设置错误报告,抛出exceptions异常 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->beginTransaction(); //开始事务 $dbh->exec("insert into staff(id, first, last) values(23,'ansion','bloggs')"); $dbh->exec('insert into salarychange(id, amount, changedate) values(23, 20000, NOW()"); $dbh->commit(); //提交事务 } catch (Exception $e){ $dbh->rollBack(); //若事务没有成功则回滚事务 echo $e->getMessage(); } //事务测试可以插入不存在的字段
6、调用存储过程
7、大对象
来自ansion博客
2017年1月30日