我有类似以下的功能
function add_user_comment($user_id, $comment_id)
{
- some code-
}
用户和评论在数据库中都有一个单独的表。
现在,在调用函数时,如果为$ user_id或$ comment_id提供了错误的值,则应该返回错误消息。
对此采取何种正确方法:
执行user_id,comment_id存在于其表中然后运行查询的验证?这意味着多次进入数据库。
运行查询而不检查,并在因外键约束而失败时抛出错误。
答案 0 :(得分:0)
执行此操作的正确方法是创建一个存储过程,为您处理插入。在存储过程中,您可以创建一个事务,检查您的值,然后引发一个错误,该错误将从DBMS返回到您的代码,然后您可以捕获并使用该错误作为发生错误的指示。如果您没有处于错误状态,那么存储过程可以执行插入,并且您只需使用一个数据库周转就可以在单个操作中处理这两个任务。存储过程在DBMS上运行,通常是"编译"所以他们跑得很快。
这是最好的方法,而不是让CODE执行查询以查看是否存在某些内容,并将结果从数据库中获取,打包并将线路设置为您的代码,此时您必须根据您所看到的内容采取行动,然后您必须打包数据,并将IT发送到DBMS,以执行您希望执行的操作。这是两个数据库周转时间,当一个人完成这个任务时。它完全是关于错误处理,你如何做,以及你在错误的情况下做了什么。
我还应该提一下,你的架构与你的错误处理机制的成功程度有很大的关系。如果您的架构错误,那么您可能正在更新多个表,插入数据,并获取ID以便将数据插入其他表等等......这只是......错误。 ..您希望确保您的插入也在存储过程中完成,因此对它的单次调用将插入记录,任何相关记录,并可能返回您刚刚插入的记录的新ID。好吧,那或错误。