第14章pdo数据库抽象层_第1页
第14章pdo数据库抽象层_第2页
第14章pdo数据库抽象层_第3页
第14章pdo数据库抽象层_第4页
第14章pdo数据库抽象层_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

第14章PDO数据库抽象层14.1PDO概述14.2PDO连接数据库14.3在PDO中执行SQL语句14.4PDO获取结果集14.5PDO错误处理14.6PDO捕获SQL语句中的错误14.7PDO事务处理14.8综合实训案例第14章PDO数据库抽象层学习目的与要求掌握PHP数据库编程总体步骤掌握PDO连接数据库的方法掌握在PDO中执行SQL语句的方法

掌握在PHP网页中显示数据表的数据的方法理解捕获SQL语句中的错误PHP数据库编程总体步骤①

连接数据库②

执行SQL语句③

获取结果集④

显示结果集例如:$pdo=newPDO($dsn,$user,$password);例如:$rows=$pdo->query($sql);例如:$row=$rows->fetch(PDO::FETCH_OBJ)例如:print_r($row)PHP数据库编程步骤show_books.php①

show_books.php<?php$user="root";$password="";//连接数据库的用户名、密码

$host="localhost";$db_name="bookmanage";//数据库服务器地址、数据库名称

$dsn="mysql:host=$host;dbname=$db_name";//数据源名称

try{$pdo=newPDO($dsn,$user,$password);//实例化对象

$pdo->query("setnamesutf8");$sql="select*frombook";$rows=$pdo->query($sql); echo"<tableborder=5bordercolor='#999999'> <tr><td>图书编号</td><td>图书名称</td><td>作者</td></tr>"; while($row=$rows->fetch(PDO::FETCH_OBJ)){ echo"<tr>"; echo"<td>",$row->bookid,"</td>"; echo"<td>",$row->bookname,"</td>";echo"<td>",$row->editor,"</td>"; echo"</tr>"; } echo"</table>";}catch(Exception$e)//捕捉错误信息

{echo$e->getMessage();}?>14.1

PDO概述14.1.1

PDO的概念及特点1.PDO的概念PDO是PHPDataObject(PHP数据对象)的简称,是PHP5.1之后发布的一个全新的数据库连接层,它支持目前流行的绝大多数数据库,例如MySQL、MSSQLServer、Oracle、Sybase等。PDO出现后,PHP程序连接数据库就不再使用mysqli_*函数、oci_*函数或者mssql_*函数了,只需要使用PDO接口中的方法就可轻松地连接数据库,而且只需要修改PDO的DSN(数据源名称)就可以连接不同类型的数据库。14.1

PDO概述14.1.1

PDO的概念及特点2.PDO的特点PDO的作用就是统一各种数据库的访问接口,这样可以轻松地与各种数据库进行交互,使得PHP操作各种不同类型的数据库更加方便和高效。PDO扩展是模块化的,用户在运行时,只需要为数据库加载驱动程序即可,不需要重新编译和安装PHP系统。14.1.2PDO的配置PDO是随着PHP系统一起发行的,默认情况下,PDO在PHP系统中为开启状态。如果要启用对某个数据库驱动程序的支持,就要打开php.ini文件进行相应的配置。PDO的配置选项如图所示。要检测PHP系统中PDO是否已经启动,可以编写一个PHP程序,写入语句:

<?php

phpinfo();?>

该PHP程序文件启动后,若能找到PDO的信息内容,就说明PDO已经启动。进一步?----增加记录将show_books.php命名为show_books_insert.php在show_books_insert.php中用SQL语句往book表中增加”大学英语”的图书信息,并把所有信息展示出来(数据参看P135示例8-14的结果)进一步??----利用界面增加记录设计一个添加图书信息的界面的insert_html.php网页结合show_books_insert.php中用SQL语句往book表中增加”高等数学”的图书信息并把所有信息展示出来(数据参看P135示例8-14的结果)insert_html.php网页insert_html.php代码<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><htmlxmlns=""><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>增加记录</title></head><body><formmethod="post"action="show_books_insert.php">图书编号:<inputtype="text"name="bookid"/><br/>图书名称:<inputtype="text"name="bookname"/><br/>作者:<inputtype="text"name="editor"/><br/><inputtype="submit"name="ok"value="增加"/><br/></form></body></html>show_books_insert.php网页show_books_insert.php代码<html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>图书清单</title></head><body><?php$bookid=$_POST["bookid"];$bookname=$_POST["bookname"];$editor=$_POST["editor"];

$user="root";$password="";//连接数据库的用户名、密码

$host="localhost";$db_name="bookmanage";//数据库服务器地址、数据库名称

$dsn="mysql:host=$host;dbname=$db_name";//数据源名称

try{$pdo=newPDO($dsn,$user,$password);//实例化对象

$pdo->query("setnamesutf8"); $insert_row_count=$pdo->exec('INSERTINTO`book`(`bookid`,`bookname`,`editor`)VALUES("'.$bookid.'","'.$bookname.'","'.$editor.'")'); $sql="select*frombook";$rows=$pdo->query($sql); echo"<tableborder=5bordercolor='#999999'> <tr><td>图书编号</td><td>图书名称</td><td>作者</td></tr>"; while($row=$rows->fetch(PDO::FETCH_OBJ)){ echo"<tr>"; echo"<td>",$row->bookid,"</td>"; echo"<td>",$row->bookname,"</td>";echo"<td>",$row->editor,"</td>"; echo"</tr>"; } echo"</table>";}catch(Exception$e)//捕捉错误信息

{echo$e->getMessage();}?></body></html>进一步?

----修改记录将show_books.php命名为show_books_update.php在show_books_update.php中,用SQL语句修改《西方经济学》的价格为60,并把所有图书信息展示出来进一步??----利用界面增加记录设计一个修改图书信息的界面的update_html.php网页结合show_books_update.php中用SQL语句往book表中修改《西方经济学》的图书信息并把所有信息展示出来(数据参看P135示例8-14的结果)update_html.php网页update_html.php代码<html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>修改记录</title></head><body><formmethod="post"action="show_books_update.php">图书编号:<inputtype="text"name="bookid"/>【必须填写】<br/>图书名称:<inputtype="text"name="bookname"/><br/>作者:<inputtype="text"name="editor"/><br/>价格:<inputtype="text"name="price"/><br/>出版社:<inputtype="text"name="publish"/><br/>出版日期:<inputtype="text"name="pubdate"/><br/>库存量:<inputtype="text"name="ckl"/><br/><inputtype="submit"name="ok"value="修改"/><br/></form></body></html>show_books_update.php代码<html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>图书清单</title></head><body><?php$bookid=$_POST["bookid"];$bookname=$_POST["bookname"];$editor=$_POST["editor"];$price=$_POST["price"];$publish=$_POST["publish"];$pubdate=$_POST["pubdate"];$kcl=$_POST["kcl"];

$user="root";$password="";//连接数据库的用户名、密码

$host="localhost";$db_name="bookmanage";//数据库服务器地址、数据库名称

$dsn="mysql:host=$host;dbname=$db_name";//数据源名称

try{$pdo=newPDO($dsn,$user,$password);//实例化对象

$pdo->query("setnamesutf8"); $update_row_count=$pdo->exec('update`book`set`bookname`="'.$bookname.'",`editor`="'.$editor.'",`price`="'.$price.'",`publish`="'.$publish.'",`pubdate`="'.$pubdate.'",`kcl`="'.$kcl.'"where`bookid`="'.$bookid.'",');

$sql="select*frombook";$rows=$pdo->query($sql); echo"<tableborder=5bordercolor='#999999'> <tr><td>图书编号</td><td>图书名称</td><td>作者</td></tr>"; while($row=$rows->fetch(PDO::FETCH_OBJ)){ echo"<tr>"; echo"<td>",$row->bookid,"</td>"; echo"<td>",$row->bookname,"</td>";echo"<td>",$row->editor,"</td>"; echo"</tr>"; } echo"</table>";}catch(Exception$e)//捕捉错误信息

{echo$e->getMessage();}?></body></html>进一步?

----查询记录将show_books.php命名为show_books_select.php在show_books_select.php中,用SQL语句c查询出《西方经济学》,并把查询出来的图书信息展示出来进一步??----利用界面查询记录设计一个修改图书信息的界面的select_html.php网页结合show_books_select.php中,用SQL语句c查询出《西方经济学》,并把查询出来的图书信息展示出来select_html.php代码<html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>查询记录</title></head><body><formmethod="post"action="show_books_select.php">图书名称:<inputtype="text"name="bookname"/>【必须填写】<br/><inputtype="submit"name="ok"value="查询"/><br/></form></body></html>show_books_select.php代码<html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>图书清单</title></head><body><?php$bookname=$_POST["bookname"];

$user="root";$password="";//连接数据库的用户名、密码

$host="localhost";$db_name="bookmanage";//数据库服务器地址、数据库名称

$dsn="mysql:host=$host;dbname=$db_name";//数据源名称

try{$pdo=newPDO($dsn,$user,$password);//实例化对象

$pdo->query("setnamesutf8");

$sql="select*frombookwherebooknamelike'%".$bookname."%'";$rows=$pdo->query($sql); echo"<tableborder=5bordercolor='#999999'> <tr><td>图书编号</td><td>图书名称</td><td>作者</td> <td>价格</td><td>出版社</td><td>出版日期</td><td>库存量</td></tr>"; while($row=$rows->fetch(PDO::FETCH_OBJ)){ echo"<tr>"; echo"<td>",$row->bookid,"</td>"; echo"<td>",$row->bookname,"</td>";echo"<td>",$row->editor,"</td>"; echo"<td>",$row->price,"</td>"; echo"<td>",$row->publish,"</td>"; echo"<td>",$row->pubdate,"</td>"; echo"<td>",$row->kcl,"</td>"; echo"</tr>"; } echo"</table>";}catch(Exception$e)//捕捉错误信息

{echo$e->getMessage();}?></body></html>定义一个网站主操作界面main.php

将前面的各个功能整合成网站main.php代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>主操作界面</title><scriptsrc=""></script><style>*{margin:0;padding:0}html,body{height:100%}#nav{float:left;width:15%;height:100%;background-color:antiquewhite}#con{float:right;width:85%;height:100%;background-color:aqua}</style><script>$(document).ready(function(){//页面加载的时候,内容框默认show_books.php$('#con').load('./show_books.php'); //单击mainmenu链接,加show_books.php$("#mainmenu").click(function(){$('#con').load('./show_books.php');});//单击insertmenu链接,加载insert_html.html$("#insertmenu").click(function(){$('#con').load('./insert_html.php');});//单击updatemenu链接,加载update_html.html$("#updatemenu").click(function(){$('#con').load('./update_html.php');}); //单击selectmenu链接,加载select_html.html$("#selectmenu").click(function(){$('#con').load('./select_html.php');});})</script></head><body><ulid="nav"><li><ahref="#"id="mainmenu">主操作界面</a></li><li><ahref="#"id="insertmenu">增加</a></li><li><ahref="#"id="updatemenu">修改</a></li><li><ahref="#"id="selectmenu">查询</a></li></ul><divid="con"></div></body></html>思考???前面搭建的网站,普通用户能操作吗?这样有什么危险??-----怎么办???弄一个登录验证页面------当用户输入正确用户名和密码,才能访问main.php登录验证相关问题创建user表设计登录页面login_html.php设计登录验证程序login_check.php创建user表创建表格:CREATETABLE`user`(`name`varchar(10)NOTNULLCOMMENT'用户名',`password`varchar(10)NOTNULLCOMMENT'密码')ENGINE=InnoDBDEFAULTCHARSET=utf8;添加数据:INSERTINTO`user`(`name`,`password`)VALUES('linronghai','12345678'),('yinbin','12345678');设计登录页面login_html.php<html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>登录界面</title></head><body><formmethod="post"action="login_check.php">姓名:<inputtype="text"name="myName"/><br/>密码:<inputtype="password"name="myPassword"/><br/><inputtype="submit"name="mylogin"value="登录"/></form></body></html>设计登录验证程序???login_check.php<?phpheader("Content-Type:text/html;charset=utf-8");$name=$_POST["myName"];$password=$_POST["myPassword"];//怎么知道姓名和密码是否对了呢??>怎么知道姓名和密码是否对了呢???????select*fromuserwherename='yinbin'andpassword='12345678'可否利用上面的语句呢?怎么知道姓名和密码是否对了呢?能判断登录信息的login_check.php<?phpheader("Content-Type:text/html;charset=utf-8");$myName=$_POST["myName"];$myPassword=$_POST["myPassword"];//怎么知道姓名和密码是否对了呢?$dsn="mysql:host=localhost;dbname=bookmanage";$db_user="root";$db_password="";$pdo=newPDO($dsn,$db_user,$db_password);$pdo->query("setnamesutf8");$sql="select*fromuserwherename='".$myName."'andpassword='".$myPassword."'";$rows=$pdo->query($sql);if($row=$rows->fetch(PDO::FETCH_OBJ)){ echo"姓名和密码正确";}else{echo"姓名或密码错误";}?>自动跳转到别的页面???当姓名和密码都对了,如何跳转到main.php当姓名或密码都错了,如何跳回到login_html.php网页自动跳转(1)跳转到主操作界面main.phpecho'<metahttp-equiv="refresh"content="4;URL=main.php">';(2)跳转到登录界面login_html.phpecho'<metahttp-equiv="refresh"content="4;URL=login_html.php">';此时的login_check.php带跳转的login_check.php代码<?phpheader("Content-Type:text/html;charset=utf-8");$myName=$_POST["myName"];$myPassword=$_POST["myPassword"];//怎么知道姓名和密码是否对了呢?$dsn="mysql:host=localhost;dbname=bookmanage";$db_user="root";$db_password="";$pdo=newPDO($dsn,$db_user,$db_password);$pdo->query("setnamesutf8");$sql="select*fromuserwherename='".$myName."'andpassword='".$myPassword."'";$rows=$pdo->query($sql);if($row=$rows->fetch(PDO::FETCH_OBJ)){ echo"姓名和密码正确"; echo'<metahttp-equiv="refresh"content="4;URL=main.php">';}else{echo"姓名或密码错误"; echo'<metahttp-equiv="refresh"content="4;URL=login_html.php">';}?>前面形成了------

功能较完善的网站(1)登录验证进入后台页面(2)后台页面中A.可增加产品B.修改产品C.查找产品D.删除产品14.2PDO连接数据库

在PDO中,要建立与数据库的连接,需要实例化PDO的构造函数。PDO构造函数的语法格式如下:construct(stringdsn,stringusername,stringpassword,arraydriver_options)参数含义dsn规定PDO的数据源名,包括主机名(地址)、端口号和数据库名称username可选。规定PDO连接数据库的用户名password可选。规定PDO连接数据库的密码driver_options可选。规定连接数据库的其他选项。具体内容参考PDO预定义常量的内容【实例14-1】使用PDO连接MySQL数据库。

<?phpheader("Content-Type:text/html;charset=gb2312");$db_name="student";//数据库名称

$user="root";//连接数据库的用户名

$password="";//连接数据库的密码

$host="localhost";//数据库服务器地址

$dsn="mysql:host=$host;dbname=$db_name";//数据源名称

try{

$pdo=newPDO($dsn,$user,$password);//实例化对象

echo"PDO连接数据库成功!";

}catch(Exception$e)//捕捉错误信息

{echo$e->getMessage();

}?>为了编程方便,可以将PDO连接数据库的代码编辑成一个独立的PHP程序文件(如pdo_connect.php),需要使用PDO连接数据库的时候,可以通过include()或include_once()语句调用该程序文件。程序文件pdo_conncet.php程序文件代码如下:<?php$db_name="student";//数据库名称

$user="root";//连接数据库的用户名

$password="";//连接数据库的密码

$host="localhost";//数据库服务器地址

$dsn="mysql:host=$host;dbname=$db_name";//数据源名称

try{$pdo=newPDO($dsn,$user,$password);//实例化对象

$pdo->query("setnamesgb2312");}catch(Exception$e)//捕捉错误信息

{

echo$e->getMessage();

}?>14.3

在PDO中执行SQL语句PDO连接数据库成功后,就可以执行SQL语句操作数据表了。在PDO中执行SQL语句主要采用三种方法:exec()方法、query()方法和预处理语句prepare()及execute()。14.3.1exec()方法exec()方法执行后返回受影响记录的行数,其语法格式如下:intPDO:exec(stringstatement)参数含义statement规定要执行的SQL语句。SQL语句通常指INSERT、DELETE和UPDATE语句【实例14-2】使用exec()方法执行删除操作。假设数据库student包含数据表score,数据表的记录如表14-3所示。使用exec()方法,删除其中cj字段值小于60的记录。xhxmbjkccj150212101方波材料2015高等数学92150412312李静文法2015英语47..............................150313223于文华会计2015社会学67150112224董海川自动化2015哲学58<?phpheader("Content-Type:text/html;charset=gb2312");

include_once("pdo_connect.php");$sql="deletefromscorewherecj<60";//要执行的SQL语句

try{

$rows=$pdo->exec($sql);//执行SQL语句

echo"共删除记录:",$rows;

}catch(Exception$e)

{echo$e->getMessage();}?>14.3.2query()方法query()方法执行后返回查询后的结果集,其语法格式如下:

PDOStatementPDO:query(stringstatement)

参数含义statement规定要执行的SQL语句。SQL语句通常指SELECT语句【实例14-3】使用query()方法执行查询操作。

<?phpheader("Content-Type:text/html;charset=gb2312");

include_once("pdo_connect.php");

$sql="select*fromscorewherecj>=60";try{

$result=$pdo->query($sql);foreach($resultas$r){

echo$r["xh"],"",$r["xm"],"",$r["bj"],"",$r["kc"],"",$r["cj"],"<br/>";

}}catch(Exception$e){echo$e->getMessage();}?>14.3.3预处理语句prepare()和execute()【深入学习-自学】prepare()方法先做查询的准备工作,然后调用execute()方法执行查询,并且还可以通过bindParam()方法来绑定参数提供给execute()方法。prepare()方法和execute()方法的语法格式如下:

PDOStatementPDO:prepare(stringstatement,arraydriver_option)boolPDOStatement::execute(arrayinput_prarameters)参数含义statement规定要执行的操作语句driver_options可选。规定连接数据库的其他选项,具体内容参考PDO预定义常量内容参数含义input_parameters可选。规定prepare()方法要执行SQL语句的参数表

execute()方法的参数说明【实例14-4】使用prepare()方法和execute()方法添加记录。

<?phpheader("Content-Type:text/html;charset=gb2312");

include_once("pdo_connect.php");$query="insertintoscoreset

xh=:s_xh,xm=:s_xm,bj=:s_bj,kc=:s_kc,cj=:s_cj";try{$result=$pdo->prepare($query);$result->execute(array(':s_xh'=>'140213023',':s_xm'=>'钱文刚',':s_bj'=>'金融2014',':s_kc'=>'西方经济学',':s_cj'=>67));echo"记录成功加入!";}catch(Exception$e){echo$e->getMessage();}?>【实例14-5】使用prepare()方法和execute()方法查询记录。<?phpheader("Content-Type:text/html;charset=gb2312");

include_once("pdo_connect.php");$query="select*fromscorewherecj>=:s_cj";try{$result=$pdo->prepare($query);$result->execute(array(':s_cj'=>60));while($r=$result->fetch(PDO::FETCH_ASSOC)){echo$r["xh"],"";echo$r["xm"],"";echo$r["bj"],"";echo$r["kc"],"";echo$r["cj"],"<br/>";}}catch(Exception$e){echo$e->getMessage();}?>14.4

PDO获取结果集当使用PDO->query()或使用prepare()和execute()查询记录时,会得到返回的结果集,常用的获取结果集的方法有:fetch()、fetchAll()和fetchColumn()。14.4.1fetch()方法fetch()方法获取结果集中的下一行,其语法格式如下:mixedPDOStatement::fetch(intfetch_style,intcursor_orientation,intcursor_offset)参数含义fetch_style可选。规定结果集的返回方式,具体值如表14-8所示cursor_orientation可选。规定PDOStatement对象的一个浮动游标,可用于获取指定的一行cursor_offset可选。规定游标的偏移量值含义PDO::FETCH_ASSOC关联数组形式PDO::FETCH_NUM数字索引数组形式PDO::FETCH_BOTH两者数组形式都有,为默认值PDO::FETCH_OBJ按照对象的形式PDO::FETCH_BOUND以布尔值的形式返回结果,同时将获取的列的值赋给bindParam()方法中指定的变量PDO::FETCH_LAZY以关联数组、数字索引数组对象和对象三种形式返回结果表

fetch_style()可选值show_books.php【实例14-6】使用fetch()方法获取结果集的数据。

<?phpheader("Content-Type:text/html;charset=gb2312");

include_once("pdo_connect.php");$query="select*fromscore";try{$result=$pdo->prepare($query);$result->execute();while($r=$result->fetch(PDO::FETCH_OBJ))

{

echo$r->xh,"";echo$r->xm,"";echo$r->bj,"";echo$r->kc,"";echo$r->cj,"<br/>";}}catch(Exception$e){echo$e->getMessage();}?>14.4.2fetchAll()方法fetchAll()方法可以获取结果集的全部行,它的返回值是一个包含结果集中所有数据的二维数组。其语法格式如下:

arrayPDOStatement::fetchAll(intfetch_style,intcolumn_index)

参数含义fetch_style可选。规定结果集的返回方式,可选值见表14-8column_index可选。规定字段的索引值【实例14-7】使用fetchAll()方法获取结果集的全部数据。<?phpheader("Content-Type:text/html;charset=gb2312");

include_once("pdo_connect.php");$query="select*fromscore";try{$result=$pdo->prepare($query);$result->execute();$r=$result->fetchAll(PDO::FETCH_ASSOC);

for($i=0;$i<count($r);$i++){

echo$r[$i]["xh"],"";echo$r[$i]["xm"],"";echo$r[$i]["bj"],"";echo$r[$i]["kc"],"";echo$r[$i]["cj"],"<br/>";}}catch(Exception$e){echo$e->getMessage();}?>14.4.3fetchColumn()方法fetchColumn()方法获取结果集中下一行的指定列的值,其语法格式如下:

stringPDOStatement::fetchColumn(intcolumn_number)参数含义column_num可选。规定字段的索引值,从0开始。若忽略,则从第一列开始取值【实例14-8】使用fetchColumn()获取结果集中下一行的一列数据。

<?phpheader("Content-Type:text/html;charset=gb2312");

include_once("pdo_connect.php");$query="select*fromscore";$result=$pdo->prepare($query);$result->execute();echo$result->fetchColumn(0);//获取第一行第一列的值

?>14.5PDO错误处理(体验)

show_books_err.php14.5PDO错误处理(体验)

show_books_err.php前句话作用:定义了错误发生时的处理方式有它的区别当出现错误时-----可以捕获这个错误,并在网页中显示错误原因大大方便我们调试程序!show_books_err.php

出错提示演示show_books_err.php

出错提示演示14.5PDO错误处理(体验)

show_books_err.php<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><htmlxmlns=""><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>图书清单</title></head><body><?php$user="root";$password="";//连接数据库的用户名、密码

$host="localhost";$db_name="bookmanage";//数据库服务器地址、数据库名称

$dsn="mysql:host=$host;dbname=$db_name";//数据源名称

try{$pdo=newPDO($dsn,$user,$password);//实例化对象

$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $pdo->query("setnamesutf8"); $sql="select*frombook";$rows=$pdo->query($sql); echo"<tableborder=5bordercolor='#999999'> <tr><td>图书编号</td><td>图书名称</td><td>作者</td></tr>"; while($row=$rows->fetch(PDO::FETCH_OBJ)){ echo"<tr>"; echo"<td>",$row->bookid,"</td>"; echo"<td>",$row->bookname,"</td>";echo"<td>",$row->editor,"</td>"; echo"</tr>"; } echo"</table>";}catch(Exception$e)//捕捉错误信息

{echo$e->getMessage();}?></body></html>14.7PDO事务处理(略)在PDO中也可以进行事务的处理,包括:开启事务、提交事务以及回滚事务。1.开启事务开启事务是通过beginTransaction()方法来实现的。该方法将关闭自动提交(mit)模式,直到事务提交或者事务回滚以后才恢复。2.事务提交事务提交是通过commit()方法来完成的。该方法若提交成功,则返回TRUE,否则返回FALSE。3.事务回滚事务回滚是通过rollback()方法来完成的。【实例14-14】事务的开启、提交以及回滚。

<?phpheader("Content-Type:text/html;charset=gb2312");include_once("pdo_connect.php");//通过PDO连接数据库

try

{$pdo->beginTransaction();//开启事务

$sql="updatescoresetbj='通信2015'wherexh='150212101'";

$result=$pdo->prepare($sql);

$result->execute();$pdo->commit();//提交事务

}catch(PDOException$e)

{

echo"错误:",$e->getMessage();$pdo->rollback();//回滚事务

}?>14.8综合实训案例本节主要介绍利用PDO设计用户登录界面的方法和步骤。1.分析假定有数据库bookmanage,其中包含数据表user,表结构如表所示字段字段类型含义namevarchar用户名passwordva

温馨提示

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

评论

0/150

提交评论