- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
众所周知,一个事务是由多条准备好的语句逐一执行组成的,如果其中一条语句失败,就会抛出PDOException,你可以捕获它并获取错误信息,但是这个错误信息是对于“开发人员”,我需要向最终用户显示特定错误,例如:“交易失败,因为......”,“......”是我需要向客户端显示的原因。
我有一个想法来解决这个问题,它使用一个名为'query_trace'
的数组,该数组将为执行的查询和执行结果放置一个键,如下所示:
// prepare statement, bindParams....
$query_trace['query1_insert_user'] = "OK"
// prepare statement, bindParams....
$query_trace['query2_insert_user_more_information'] = "OK"
// prepare statement, bindParams....
$query_trace['query3_create_user_account'] = "FAILED"
(失败的字符串已在 catch 中建立:
} catch (PDOException $e)
{ $query_trace['query3_create_user_account'] = "FAILED" }
return $query_trace; ...
然后在 Controller 中,当我收到 query_trace 响应时,我将检查:
if ($query_trace['query1_insert_user'] != "OK")
echo "The data for the user is not valid";
else
if ($query_trace['query2_insert_user_more_information'] != "OK")
echo "The additional information of the user is not valid";
else
if ($query_trace['query3_create_user_account'] != "OK")
echo "The username is not valid or actually exists";
else
echo "The transaction was great!";
问题是这是一个好方法和/或 PDO 提供了一些函数/方法来“自动跟踪”这个?
谢谢。
最佳答案
从错误消息来看,您既不需要事务也不需要多个语句。
只需在执行任何插入之前验证用户输入,然后将用户数据插入到单个用户表中,无需任何事务。
您想要向用户报告的唯一可能情况是用户名重复。在这种特殊情况下,您可能想要捕获错误,检查它是否是重复的键,如果是,则将该报告报告给用户。否则,只需重新抛出异常并让站点范围内的错误处理程序告诉用户出现了问题。
关于php - 如何处理PDO事务错误并告知客户端结果呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39763242/
有没有办法判断 Android 设备何时处于 sleep 模式?测试我的应用程序时,我按电源按钮关闭屏幕,需要等到 sleep 模式激活。然后,我使用 Google Cloud Messaging (
我想弄清楚如何查询一个表(该表实际上是一个结果集,所以它将是一个子查询),按 ColA=ColB 对其进行分组(见下文),并一步创建一个计算字段。 所以,如果我的测试数据看起来像 可乐 可乐 可乐 1
我是一名优秀的程序员,十分优秀!