首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP脚本中,当连接/发送查询到数据库时,我应该如何处理异常?

在PHP脚本中,当连接/发送查询到数据库时,我应该如何处理异常?
EN

Stack Overflow用户
提问于 2012-10-31 22:38:32
回答 6查看 73关注 0票数 2

以下是我可能的解决方案:

1)使用exit()终止脚本。(问题:影响整个页面的内容加载,而不仅仅是数据库中的数据)

2)在页面中嵌入一个<div>元素,专门用于展示可能出现的异常。

标准方法是什么?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-11-01 05:59:44

选项1)不整洁,因为它提供的用户体验很差

选项2)是首选的。

使用PDO,下面的代码将显示异常并将其与时间戳一起存储。

代码语言:javascript
复制
try {  
    $dbh = new PDO("mysql:host=$host;dbname=$database", $username, $password);  
    $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );  
    $stmt = $dbh->prepare("INSERT INTO table ( column ) values ( value )");  
    $stmt->execute(); 
    }  
catch(PDOException $e) {  
    echo "I'm sorry I'm afraid you can't do that.". $e->getMessage() ;// Remove or modify after testing 
    file_put_contents('PDOErrors.txt',date('[Y-m-d H:i:s]'). $e->getMessage()."\r\n", FILE_APPEND);  
}  

在生产站点上,测试后的echo语句应修改为

代码语言:javascript
复制
echo "I'm sorry I'm afraid you can't do that.";
票数 1
EN

Stack Overflow用户

发布于 2012-10-31 22:42:38

对于如何处理数据库中的异常,并没有真正的“标准”方法。这完全取决于具体的用例。例如,如果在第一种情况下无法建立数据库连接,则可能适合重定向到错误页面并立即向站点管理员发送电子邮件通知。另一方面,如果您无法执行单次插入(无论出于何种原因),则更合适的做法可能是通知用户无法完成他们正在尝试的操作,并要求他们重试。

异常本质上是一种让您,而不是您正在使用的编程语言或库来决定在出现问题时如何处理的方式。几乎所有情况下,您都希望记录错误,然后由您决定最合适的响应。

所有这些都是说,处理异常的适当方法是在应用程序中最有意义的方法。

票数 3
EN

Stack Overflow用户

发布于 2012-10-31 22:43:16

你应该在日志文件中记录你的异常,并用它来分析哪里出了问题。但从用户的角度来看,你应该向他们展示友好的语句,比如“对不起,你的请求无法被处理。”

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13160420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档