gpt4 book ai didi

php - 如何处理PDO事务错误并告知客户端结果呢?

转载 作者:行者123 更新时间:2023-11-29 11:15:54 24 4
gpt4 key购买 nike

众所周知,一个事务是由多条准备好的语句逐一执行组成的,如果其中一条语句失败,就会抛出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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com