PHP教程课件讲义:PDO_第1页
PHP教程课件讲义:PDO_第2页
PHP教程课件讲义:PDO_第3页
PHP教程课件讲义:PDO_第4页
PHP教程课件讲义:PDO_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PDOPDO简介PDO(PHPDataObjectsLayer)提供一个公共的数据库系统接口,它使用C语言做底层开发,运行速度比较快。PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层PDO以PHP5.1为基础进行设计,严格意义上讲归为PHP5的SPL库之一,与MySQLi扩展功能相似PDO的安装安装PDOMySQL驱动Linux:

cd/ports/database/pecl-PDO_MYSQL

makeinstallWindows:自带,不需要安装配置文件Linux:extension=pdo_mysql.soWindows:extension=pdo_mysql.dllPDO类query()exec()prepare()quote()beginTransaction()rollBack()commit()errorCode()errorInfo()setAttribute()getAttribute()lastInsertId()PDOStatement类execute()fetch()fetchAll()fetchColumn()setFetchMode()rowCount()setAttribute()getAttribute()errorCode()errorInfo()bindParam()bindColumn()bindValue()nextRowset()columnCount()rowCount()nextRowset()getColumnMeta()closeCursor()PDO连接数据库PDO连接数据库和其他数据库抽象层区别不大try{ $con=newPDO

('mysql:host=localhost;dbname=book','root','root'); //如果连接失败,则抛出异常}catch(PDOException$e){ echo$e->getMessage();}连接字符串MySQL"mysql:host=$host;dbname=$db"SQLite"sqlite:$db"PostgreSQL"pgsql:host=$hostdbname=$db",持久连接持久连接速度快,不用每次开关连接。$opt=array(PDO::ATTR_PERSISTENT=>TRUE);try{ $con=newPDO

('mysql:host=localhost;dbname=book','root','root',$opt); //如果连接失败,则抛出异常}catch(PDOException$e){ echo$e->getMessage();}DSN-ODBC连接使用一个DSN数据源名称,定义ODBC数据源驱动连接ini_set("pdo.dsn.dbserver","mysql::test");try{ $con=newPDO('dbserver'); //如果连接失败,则抛出异常}catch(PDOException$e){ echo$e->getMessage();}错误与异常处理设置PDO获取得错误信息的方式$con->setAttribute

(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXECPTION);PDO::ERROR_SILENTPDO::ERROR_WARNINGPDO::ERROR_EXCEPTION面向过程$con->errorCode():SQL语句错误代码$con->errorInfo():错误信息面向对象捕获PDOException异常对象使用PDO查询PDO的查询方式直接查询 $rs=$con->exec("select*frombooks"); $rs=$con->query("select*frombooks");预处理 $st=$con->prepare("select*frombookswhereid=?andname=?); $st->execute(array(201,'alex')); $row=$st->fetch();获取查询结果获取查询结果包括:数组、字符串、对象、回调函数等fetchColumn()fetch()fetchAll()setFetchMode()PDO::FETCH_NUMPDO::FETCH_ASSOCPDO::FETCH_CLASS$sql="SELECT*FROMbooks";$rs=$conn->query($sql);while($row=$rs->fetch(PDO::FETCH_ASSOC)){ echo$row['title']."<br>";}绑定参数第一种写法,使用?号$sql="insertbooks(id,name,title)values(?,?,?);";$stmt=$con->prepare($sql);$stmt->execute(array(219,"alex","PHP"));第二种写法,使用:号加上标识符$sql="insertbooks(id,name,title)values(:id,:name,:title);";$stmt=$con->prepare($sql);$stmt->execute(array("id"=>219,"name"=>"alex","title"=>"PHP"));第三种方法,bindValue()$sql="insertbooks(id,name,title)values(?,?,?);";$stmt=$con->prepare($sql);$stmt->bindValue(1,219);$stmt->bindValue(2,"alex");$stmt->bindValue(3,"PHP"));$stmt->execute();第四种写法$sql="insertbooks(id,name,title)values(:id,:name,:title);";$stmt=$con->prepare($sql);$stmt->bindValue(":id",219);$stmt->bindValue(":name","alex");$stmt->bindValue(":title","PHP"));$stmt->execute();绑定结果集第一种$sql="selecttitle,namefrombooks";$stmt=$con->prepare($sql);$stmt->execute();$stmt->bindColum(1,$title);$stmt->bindColum(2,$name);while($stmt->fetch(PDO::FETCH_BOUND)){ echo$title."".$name."<br>";}过滤字符串使用PDO过滤引起SQL注入的方法,过滤特殊字符$con->quote()$name=$con->quote($_POST["name"]);BLOB存储图片$blob=fopen("img.jpg","rb");$sql="insertbooks(imgdate)values(?)";$stmt=$con->prepare($sql);$stmt->bindParam(1,$blob,PDO::PARAM_LOB);$stmt->execute();读取图片$sql="selectimgdatefrombookswhereid=201";$stmt=$con->prepare($sql);$stmt->execute();$stmt->bindColumn(1,$blob,PDO::PARAM_LOB);$stmt->fetch(PDO::FETCH_BOUND);$img=stream_get_contents($blob);//fpassthru($blob);header("Content-Type:image/jpeg");echo$img;事物处理PDO驱动程序支持所有的事物数据库$con->beginTransaction();if($con->exec($sql)===FALSE){ $con->rollback();}$con->commit();存储过程使用PDO调用存储过程$st=$con->prepare("CALLproc(?)");$st->bindParam(1,$str);$str="info";$st->execute();OUTParam$st=$con->prepare("CALLproc(?)");$st->bindParam(1,$str,

PDO_PARAM_STR,40

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论