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

一 代码

<!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>

 

<?php
header ( "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}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值