Php 您是否应该始终以“结束mysql查询?”;还是死;

Php 您是否应该始终以“结束mysql查询?”;还是死;,php,Php,某些教程中的示例查询始终以以下内容结束: or die(mysql_error()); 我可以理解为什么您有时会想这样做,但他们甚至将此用于真正不应该引起问题的查询。始终使用此选项是一种好的做法,还是他们这样做只是为了帮助您在学习过程中进行调试?这里的“不应该”一词不好。不应该有问题的查询仍然会受到外部因素的影响,例如与数据库的连接中断 但他们甚至将其用于真正不应该引起问题的查询 如果web服务器和数据库服务器之间的网络发生故障,即使是最简单的SELECT*FROM FOO也会导致问题。这

某些教程中的示例查询始终以以下内容结束:

or die(mysql_error());  
我可以理解为什么您有时会想这样做,但他们甚至将此用于真正不应该引起问题的查询。始终使用此选项是一种好的做法,还是他们这样做只是为了帮助您在学习过程中进行调试?

这里的“不应该”一词不好。不应该有问题的查询仍然会受到外部因素的影响,例如与数据库的连接中断

但他们甚至将其用于真正不应该引起问题的查询

如果web服务器和数据库服务器之间的网络发生故障,即使是最简单的
SELECT*FROM FOO
也会导致问题。这是一个很好的实践,因为在处理外部系统(如数据库)时,您确实不能假设某些东西是“安全的”


在生产代码中,您可能不希望使用
die()
来处理错误-您可能可以运行一些自定义代码来处理它。无论如何,你肯定应该以这样或那样的方式处理错误,而
die()
是一个好的开始方式。

这取决于你所说的“不应该是问题”是什么意思

如果您的意思是“它不会失败”,那么如果数据库服务器脱机会发生什么


只有当你的意思是“不管它是否失败,脚本都能持续运行,没有问题”,你应该考虑没有<代码>或死亡< /代码>。

你不一定需要

or die()
但是你应该有某种错误处理系统。如果还没有,我会将它添加到我的查询中,即使是简单的查询

编辑:澄清一下,我所说的“it”是指or die()语句

没有。 不惜一切代价避免这样做

  • 向最终用户显示这是一条可怕的消息
  • mysql\u错误
    可能会暴露您不希望获得的信息
  • 无法处理错误,即恢复
  • 设想一个交易数据库——您的客户发送资金,因此您必须修改两个表(两个查询)

    第一个将钱从X转移到Y并成功。 第二个必须从X中减去Y

    您无法还原该事务,并且不会记录错误。有效地让用户Y感到高兴,而X却让用户搞不清楚钱到哪里去了


    对查询使用合理的错误处理-或者创建一个类来为您处理该问题,或者使用ORM。

    我认为在页面顶部使用它不会有什么坏处,无论您在哪里查看数据库连接信息,在尝试仅连接到数据库时使用它


    但为什么我们要在你执行的每一个查询中使用它呢!显然,如果它连接到数据库,那么如果你知道没有其他错误应该发生,那么我不明白为什么你不能避免每页使用它不止一次

    完全同意-应该从手册和书籍中删除“or die()”的用法,并显示正确的错误处理(即使是赤裸裸的)。好的,请教育新手OP和这位新手评论员,让他们知道如何使用独立于框架的坚如磐石的PHP错误处理?@Andrew,使用框架是一个很好的开始——一旦你对框架感到满意,你就可以窥探它们的来源,看看它们是如何处理错误的。