【发布时间】:2017-02-07 08:42:22
【问题描述】:
如你所知,一个事务是由多个prepared statements组成的,一一执行,如果其中一个语句失败,它会抛出一个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"
(那个 FAILED 字符串在 catch 中是稳定的:
} catch (PDOException $e)
{ $query_trace['query3_create_user_account'] = "FAILED" }
return $query_trace; ...
然后在控制器中,当我得到 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 mysql sql pdo error-handling