那么你如何使用mysqli $ driver-> report_mode?

时间:2016-05-21 23:08:21

标签: php mysql mysqli

我正在努力让我的新手最好组建一个生产质量的网站。所以我经常使用

   $driver = new mysqli_driver();
   $driver->report_mode =  MYSQLI_REPORT_ALL;

这可能是,也可能不是。它帮助我找到不完全100%的东西。但似乎有这个索引的东西,我无法摆脱自己。错误,即使你在网上使用try / catch大便并破坏我的标题。该网站随后消失,没有用户会理解的消息。我不明白。

我的问题是这个。在真正维护生产站点的人中,你如何处理mysql驱动程序?你把它设置为MYSQLI_REPORT_OFF,这似乎只是找到......或者什么?

我不是想在这里侮辱(上帝知道我不是php / mysqli的主人),但我真的很想知道你们的专业人士做了什么。

感谢。 (如果因为多余而被切断......我试过恩典)

2 个答案:

答案 0 :(得分:4)

  

但似乎有这个索引的东西我无法摆脱。

让它只是

$driver->report_mode =  MYSQLI_REPORT_ALL | MYSQLI_REPORT_STRICT;

但是,在投入生产之前修复错误会更好。如果您不理解,您可以随时询问解释。

  

在真正维护生产站点的人中,你如何处理mysql驱动程序?

NOTHING。

  

网站随后会消息,没有用户会理解的消息......我不明白。

不要让人知道,让它死去。这是你的代码让它死了。将代码更改为更友好的错误消息。

答案 1 :(得分:1)

如果我理解正确,你想创造一个伟大的"最终产品"网站运作良好,最终,我们所有开发人员都关注我们工作的网站。

如您所见,mysqli-> report_mode方法的文档为:

  

在代码开发和测试期间有助于改进查询的函数。

虽然您的意图很明确,但这个功能不是出于生产目的,因为正如您所指出的那样,它会写出导致标题无法正确处理的文本。

在最终产品上,您甚至根本不需要调用它,您需要做的是评估项目中调用的每个方法的返回值。

例如,如果要运行查询并检查错误,可以执行以下操作:

if (!$mysqli->query("QUERY CODE")) {
  // error handling code here
}

或者

// just for explanation purposes, this syntax is highly discouraged
if ($mysqli->query("QUERY CODE") === false)
  // error handling code here
}

在生产网站上(理想情况下)不应该存在不能成功完成查询的实例,但是您应该始终评估至少在文件上记录错误以便将来修复bug并提醒用户优雅的方式是,网站管理员会处理一个错误,而不是在网站布局上方显示一个白色块,显示用户不仅不理解的代码和路径,而且他/她不会这样做。关心,但邪恶的用户可能会利用。

同样在成品中,关闭屏幕上的所有错误并让他们登录文件,不仅是查询,还包括可能出现的任何其他错误。

在开发阶段一切顺利,只要确保您的网站运行顺畅,即使所有错误都已打开,然后再关闭并将其发送出去。

我希望它有所帮助。