PDO--------(PHP Data Object)

PDO是php工程师为了弥补mysqli不能操作其他数据库开发出来的一个可以操作所有数据源(Dsn)的数据库扩展类。

php学习之路:LAMP(LNMP,LNSP)--即:linux,apache,mysql,php

PDO有三大主要类:Pdo类(主要用于pdo调优);PdoStatement类(主要用于处理数据操作,包括预处理和结果集);PdoException类(主要用于处理PDO异常)

pdo类:

     $pdo -> setAttribute( PDO::ATTR_AUTOCOMMIT , false );

//setAttribute设置调优常量

pdo的getAttribute获取调优常量//注意下在操作中要作为一个类的属性即PDO::XXX

PDO_ATTR_AUTOCOMMIT //获取自动连接

PDO_ATTR_CASE //强制列名为指定的大小写

PDO_ATTR_CLIENT_VERSION //当前客户端的版本

PDO_ATTR_CONNECTION_STATUS //

PDO_ATTR_DRIVER_NAME //

PDO_ATTR_ERRMODE //

PDO_ATTR_ORACLE_NULLS //

PDO_ATTR_PERSISTENT //当前是否持久链接

PDO_ATTR_PREFETCH //

PDO_ATTR_SERVER_INFO //当前服务器信息

PDO_ATTR_SERVER_VERSION //当前服务器的版本

PDO_ATTR_TIMEOUT //

//不做过多意解,详细可参考php.net查看

echo "当前是否持久链接:".$pdo -> getAttribute( PDO::ATTR_PERSISTENT )."
";



PDOStatement类

帮我们准一个语句和在PDO中对象的exec()以及query()相比

优点: 执行效率高

安全性更高

帮我们处理结果集

是推荐使用

//$sql = "delete from news where id in(35,36,37)";

$sql = "update news set name='vvv where id in(38,39)";

$rows = $pdo -> exec( $sql );

echo "---affected rows {$rows} ";



$pdo -> exec( "SET NAMES UTF8" );//设置字符,防止插入或者更新出现乱码


关于类的预处理技术:

$sql = "insert into user(id,name,sex)values(?,?,?)";

$ptmt = $pdo -> prepare( $sql ); //把语句放到mysql数据里面记性存储。预处理


$ptmt -> bindParam(1,$id,PDO::PARAM_STR);

$ptmt -> bindParam(2,$name,PDO::PARAM_STR);

$ptmt -> bindParam(3,$sex,PDO::PARAM_STR);

$ptmt->execute();

类的别名技术:

$sql = "insert into news(title,contents,addTime)values(:title,:contents,:date)";

$ptmt = $pdo -> prepare( $sql ); //把语句放到mysql数据里面记性存储。预处理

$ptmt->execute( array( ":title"=>"简化名子{$i}",":contents"=>"名子{$i}",":date"=>date("Y-m-d H:i:s") ) );


关于pdo的异常处理机制,无需自己太多定义,可以直接继承原有的,

通过throw抛出,catch捕抓即可



你可能感兴趣的:(php-学习)