PDO中捕获SQL语句中的错误——异常模式

来源:互联网 发布:寻侠武功生肖突破数据 编辑:程序博客网 时间:2024/06/09 19:37

一 代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>使用异常模式——PDO::ERRMODE_EXCEPTION捕获SQL中的错误</title><style type="text/css"><!--body,td,th {font-size: 12px;}--></style></head><body><table id="__01" width="464" height="336" border="0" cellpadding="0" cellspacing="0"><tr><td colspan="3"><img src="images/mysql_01.gif" width="464" height="139" alt=""></td></tr><tr><td><img src="images/mysql_02.gif" width="78" height="136" alt=""></td><td width="312" height="136" valign="top"><table width="310" border="0" cellpadding="0" cellspacing="0">          <tr>            <td height="30" align="center"><strong>ID</strong></td>            <td align="center"><strong>PDO</strong></td>            <td align="center"><strong>数据库</strong></td>            <td align="center"><strong>时间</strong></td>            <td align="center"><strong>操作</strong></td>          </tr>  <?php$dbms='mysql';     //数据库类型 ,对于开发者来说,使用不同的数据库,只要改这个,不用记住那么多的函数$host='localhost'; //数据库主机名$dbName='db_database15';    //使用的数据库$user='root';      //数据库连接用户名$pass='root';          //对应的密码$dsn="$dbms:host=$host;dbname=$dbName";try {    $pdo = new PDO($dsn, $user, $pass); //初始化一个PDO对象,就是创建了数据库连接对象$pdo$query="select * from tb_pdo_mysql limit 5";//定义SQL语句$result=$pdo->prepare($query);//准备查询语句$result->execute();//执行查询语句,并返回结果集while($res=$result->fetch(PDO::FETCH_ASSOC)){//while循环输出查询结果集,并且设置结果集的为关联索引?>            <tr>            <td height="22" align="center" valign="middle"><?php echo $res['id'];?></td>            <td align="center" valign="middle"><?php echo $res['pdo_type'];?></td>            <td align="center" valign="middle"><?php echo $res['database_name'];?></td>            <td align="center" valign="middle"><?php echo $res['dates'];?></td>            <td align="center" valign="middle"><a href="delete.php?conn_id=<?php echo $res['id'];?>">删除</a></td>          </tr><?php }  } catch (PDOException $e) {    die ("Error!: " . $e->getMessage() . "<br/>");}  ?>        </table></td><td><img src="images/mysql_04.jpg" width="74" height="136" alt=""></td></tr><tr><td colspan="3"><img src="images/mysql_05.gif" width="464" height="61" alt=""></td></tr></table></body></html>

 

<?phpheader ( "Content-type: text/html; charset=utf-8" ); //设置文件编码格式if($_GET['conn_id']!=""){$dbms='mysql';     //数据库类型 ,对于开发者来说,使用不同的数据库,只要改这个,不用记住那么多的函数$host='localhost'; //数据库主机名$dbName='db_database15';    //使用的数据库$user='root';      //数据库连接用户名$pass='root';          //对应的密码$dsn="$dbms:host=$host;dbname=$dbName";try {    $pdo = new PDO($dsn, $user, $pass); //初始化一个PDO对象,就是创建了数据库连接对象$pdo$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);$query="delete from tb_pdo_mysqls where Id=:id";$result=$pdo->prepare($query);//预准备语句$result->bindParam(':id',$_GET['conn_id']);//绑定更新的数据$result->execute();} catch (PDOException $e) {echo 'PDO Exception Caught.';echo 'Error with the database:<br/>';echo  'SQL Query: '.$query;echo '<pre>';    echo "Error: " . $e->getMessage(). "<br/>";    echo "Code: " . $e->getCode(). "<br/>";echo "File: " . $e->getFile(). "<br/>";echo "Line: " . $e->getLine(). "<br/>";echo "Trace: " . $e->getTraceAsString(). "<br/>";echo '</pre>';}}?>

 

二 运行结果
PDO Exception Caught.Error with the database:
SQL Query: delete from tb_pdo_mysqls where Id=:id
Error: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'db_database15.tb_pdo_mysqls' doesn't exist
Code: 42S02
File: D:\AppServ\www\test\15\9\delete.php
Line: 16
Trace: #0 D:\AppServ\www\test\15\9\delete.php(16): PDOStatement->execute()#1 {main}

 

原创粉丝点击