首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在发送到数据库或发送查询之前验证数据并处理错误?

在发送到数据库或发送查询之前验证数据并处理错误?
EN

Stack Overflow用户
提问于 2015-12-09 00:18:07
回答 1查看 126关注 0票数 0

我有一个类似于以下功能的函数

代码语言:javascript
复制
function add_user_comment($user_id, $comment_id)
{
  - some code-
}

用户和注释在数据库中都有一个单独的表。

现在,当调用函数时,如果为$user_id或$comment_id提供了错误的值,则应该返回错误消息。

对此,应采取何种适当办法:

  1. 执行user_id、comment_id存在于其表中的验证,然后运行查询?这意味着多次访问数据库。
  2. 运行查询而不进行检查,并在由于外键约束而失败时抛出错误。
EN

回答 1

Stack Overflow用户

发布于 2015-12-09 00:31:05

正确的方法是创建一个为您处理插入的存储过程。在存储过程中,您可以创建一个事务,检查您的值,然后引发一个错误,该错误将从DBMS返回到您的代码,然后您可以捕获并使用该错误作为错误发生的指示。如果您没有处于错误状态,那么存储过程可以执行插入,并且您已经在一个操作中处理了这两个任务,只使用了一个数据库反转。存储过程在DBMS上运行,通常是“编译”的,因此它们运行得非常快。

这是最好的方法,而不是让您代码执行查询以查看是否存在某种东西,并将结果从DB中获取、打包并将连接设置到您的代码中,此时您必须根据您看到的内容采取行动,然后您必须打包数据,并将其发送到DBMS,以执行您希望执行的操作。这是两个数据库逆转,其中一个将发挥作用。这都是关于错误处理,以及如何处理错误,以及在发生错误时所做的事情。

我还应该提到,总体上,您的架构与您的错误处理机制的成功与否有很大关系。如果您的模式是错误的,那么您可能更新多个表,插入数据,并获得ID的返回,以便将数据插入到其他表,等等.那只是..。错了..。您希望确保您的插入也是在存储过程中完成的,因此对它的单个调用将插入记录、任何相关的记录,并可能返回您刚刚插入的记录的新ID。好吧,不然就错了。

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

https://stackoverflow.com/questions/34168605

复制
相关文章

相似问题

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