`
cakin24
  • 浏览: 1384175 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

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

    博客分类:
  • PHP
阅读更多

一 代码

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

 

分享到:
评论

相关推荐

    php实现PDO中捕获SQL语句错误的方法

    首先,静默模式下,PDO不会对执行的SQL语句错误抛出异常或生成错误消息,它仅仅通过PDOStatement对象的errorCode和errorInfo方法来返回错误代码和详细信息。这要求开发者手动检查这些属性来发现和处理错误。例如: ...

    php使用PDO执行SQL语句的方法分析

    在使用PDO时,建议总是启用异常模式来处理错误,这样可以更容易地捕捉到操作过程中出现的问题。同时,对于可能引起SQL注入的动态SQL语句,应当使用预处理语句来提高应用程序的安全性。 PDO的优势在于其灵活性和安全...

    pdo详解(中文教程)

    * 使用try-catch语句捕获异常 * 使用setAttribute方法设置错误处理模式 * 使用errorCode和errorInfo方法获取错误信息 PDO 的其他特性: * 支持prepared statements,能够防止SQL注入攻击 * 支持 transactions,...

    pdo封装mysql类

    - 使用PDO的异常处理模式,通过设置`PDO::ATTR_ERRMODE`为`PDO::ERRMODE_EXCEPTION`,使所有数据库错误抛出异常。 - 自定义错误处理函数,捕获并处理异常。 3. **查询操作**: - `query()` 方法:执行简单的SQL...

    PHP PDO数据库连接代码

    3. **错误处理**:PDO提供了异常处理机制,使得开发者可以更优雅地处理数据库操作中可能出现的错误。 4. **性能优化**:通过缓存查询结果和复用数据库连接,PDO能够在一定程度上提升应用的性能。 ### 示例代码解析 ...

    PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】

    - 错误处理:在开发过程中应考虑到错误处理机制,比如捕获并处理异常,确保程序健壮性。 - 性能优化:在循环获取多个结果集时,注意资源消耗,尤其是内存占用,合理优化资源使用。 - 安全性:确保传递给存储过程的...

    全新的PDO数据库操作类php版(仅适用Mysql)

    错误处理是应用程序中重要的部分,通过设置PDO的错误模式为异常模式(ERRMODE_EXCEPTION),当发生错误时,程序会抛出异常,便于开发者捕获和处理。这比传统的错误返回值更为直观和安全。 #### 8. 结构设计 本文...

    phpPDO+mysq

    通过在`try-catch`块中捕获这些异常,可以优雅地处理错误。 通过以上内容,我们可以看出PHP PDO与MySQL结合使用,能够实现高效、安全的数据库操作,无论是简单的CRUD还是复杂的业务逻辑,都能得到很好的支持。

    pdo.rar_PDO 封装

    2. **处理异常**:为了捕获可能发生的错误,可以开启PDO的异常模式,通过设置`PDO::ATTR_ERRMODE`属性为`PDO::ERRMODE_EXCEPTION`。这样,当发生错误时,会抛出一个异常。 3. **执行SQL查询**:PDO提供了`query()`...

    PHP (PDO)连接oracle数据库

    通过`setAttribute`方法,我们设置了错误处理模式为异常,这有助于在发生错误时捕获并处理。 测试例子通常包含创建、查询、更新和删除操作,确保所有基础功能都能正常工作。例如,你可以创建一个简单的查询来验证...

    sqlserver的php扩展包

    - 错误处理:通过`sqlsrv_errors()`或PDO的异常机制捕获和处理可能出现的错误。 - SQL语句编写:遵循SQL标准,避免使用可能导致性能下降的子查询和不安全的动态SQL。 - 安全性:始终使用参数化查询,避免SQL注入。 -...

    php_pdo_sqlsrv_54_nts

    3. 错误处理:PDO提供了统一的错误处理机制,可以捕获和处理数据库操作中的异常。 4. 支持事务:PDO支持事务处理,确保数据的一致性和完整性。 综上所述,"php_pdo_sqlsrv_54_nts"是PHP 5.4非线程安全版本的PDO SQL...

    thinkphp5 连接SqlService需要的扩展

    ThinkPHP5提供了异常处理机制,当发生错误时,可以捕获并处理异常: ```php try { $result = Db::connect('sqlsrv')-&gt;execute('your_sql'); } catch (\Exception $e) { echo 'Error: ' . $e-&gt;getMessage(); } ```...

    php-pdo-lib:PHP PDO 库——这个库既可以用作经典对象,也可以用作静态单例调用

    异常模式下,当发生错误时会抛出异常,易于调试;错误码模式则返回错误信息,适用于需要捕获错误并进行处理的情况。 5. **数据类型绑定**:PDO允许开发者指定数据类型,如整型、字符串型等,这在处理复杂数据时非常...

    PHP使用PDO连接SQLITE3

    - 捕获可能发生的`PDOException`异常,并输出错误信息。 ##### 2. 处理连接失败 如果连接失败或者指定的数据库文件不存在,程序会通过`header`函数重定向到一个指定的URL(`DT_URL`),这种方式可以用来处理连接...

    php实现的PDO异常处理操作分析

    首先,需要将PDO的错误处理模式设置为异常模式,这是通过PDO对象的setAttribute方法实现的,具体的方法是设置PDO::ATTR_ERRMODE属性为PDO::ERRMODE_EXCEPTION。其次,所有可能出错的语句都必须放在try语句块中。一旦...

    SQL连接器 SQL连接器

    4. 兼容性层:对于不同的数据库系统,SQL连接器需要提供相应的适配,以确保标准SQL语句可以在多种环境中运行。 二、常见的SQL连接器类型 1. JDBC(Java Database Connectivity):Java平台的标准数据库连接方式,...

    php用法PDO操作MySQL数据库实例_.docx

    然后使用`new PDO()`创建一个新的PDO实例,如果连接失败,会捕获`PDOException`异常并显示错误信息。 PDO提供了多种操作数据库的方法。如: 1. **新增**:使用`exec()`执行SQL插入语句。 ```php $sql = "insert ...

    PHP的PDO类教程

    - **错误处理**: 可以选择使用异常模式或错误模式来进行错误处理。 #### 五、PDO支持的数据库驱动程序 - **PDO_DBLIB**: 支持FreeTDS/Microsoft SQL Server/Sybase。 - **PDO_FIREBIRD**: 支持Firebird/Interbase ...

Global site tag (gtag.js) - Google Analytics