你应该总是用“或死”来结束mysql查询吗?

时间:2010-01-25 03:55:02

标签: php

一些教程中的示例查询始终以:

结束
or die(mysql_error());  

我可以理解为什么你有时会想要这样做,但他们甚至将它用于真正不应该导致问题的查询。总是使用它是一个好习惯,还是只是在你学习的时候帮助你进行调试?

6 个答案:

答案 0 :(得分:13)

NO。

不惜一切代价避免

  1. 向最终用户展示这是一个可怕的消息
  2. mysql_error可能会泄露您不希望提供的信息
  3. 无法处理错误,即还原。
  4. 想象一下交易数据库 - 您的客户汇款,因此您必须修改两个表(两个查询)。

    第一个将资金从X转移到Y并成功。 第二个必须从X 失败中减去Y.

    您无法还原事务,并且不会记录错误。有效地让用户Y快乐,X留下混淆钱的地方......

    对查询使用合理的错误处理 - 创建一个可以为您处理或使用ORM的类。

答案 1 :(得分:1)

这取决于你的意思“不应该是一个问题”。

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

只有当你的意思是“它是否失败并不重要时,脚本可以继续运行而没有问题”,你应该考虑不在那里or die

答案 2 :(得分:0)

“不应该”这个词在这里很糟糕。不应该有问题的查询仍然会受到外部因素的影响,例如:与数据库连接的连接。

答案 3 :(得分:0)

  

但他们甚至将此用于真正不应导致问题的查询

如果Web服务器和数据库服务器之间的网络崩溃,即使是最简单的SELECT * FROM FOO也会导致问题。这是一种很好的做法,因为在处理数据库等外部系统时,你真的不能认为某些东西是“安全的”。

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

答案 4 :(得分:0)

您不一定需要

or die()

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

编辑:澄清一下,“它”是指or或die()语句。

答案 5 :(得分:0)

我认为将数据库连接信息用于页面顶部不会有任何损害,只在尝试连接数据库时使用它。

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