【问题标题】:Where to find all possible errors in MySQLi在哪里可以找到 MySQLi 中所有可能的错误
【发布时间】:2017-05-10 11:24:52
【问题描述】:

我想在 MySQLi 中创建一个自定义错误系统,为此我需要一个包含所有错误代码的列表以及导致它们的原因的描述。

我搜索了整个网络,但在 php.net 上找不到任何东西


例如,如果我创建一个主机无效的新对象:

$mysqli = new mysqli('invalid_host', 'root', '', 'db');

那么错误代码将是2002,这意味着它找不到地址。

原来的错误是这样的:

php_network_getaddresses: getaddrinfo failed: nodename or servname provided, or not known

但我希望它显示:

连接错误! 连接到数据库时出现问题,这是由于您的主机名无效:“invalid_host”似乎无法连接或无法ping通! (2002)


为了做到这一点,我需要知道 MySQLi 中可能发生的所有错误,我还没有找到一个列表,所以我在这里问你是否知道一个列表


如果你想知道我要怎么做,我打算有一个数组,其中包含:

$error_list = [
    2002 => [
        'category' => 'connection_errors',
        'error_title' => 'Connection error!',
        'error_content' => 'There was an problem connecting to the database, this is caused by your invalid hostname: "invalid_host" which seems to not be connectable or pingable!',
        'error_code' => '2002',
        'error_description' => 'This error is occurred by invalid hostname. Why is this error occurring? It is occurring because you have entered invalid hostname, such as: "msql. example .com"'
    ]

    // And so on
];

如果有人知道在哪里可以找到这样的列表,我真的很高兴,这个项目将来会分享,完成后我会添加评论和链接。


该项目还可以使用 MySQLi 对 MySQL 服务器进行更轻松、更安全的(准备)查询。

【问题讨论】:

  • 我不应该在寻找 PHP MySQLi @JimL 吗?
  • 那些错误信息来自服务器。 PHP 只是简单地返回它们。
  • 您似乎在假设给定的错误代码总是意味着相同的潜在问题。或者返回相同的文本。它没有。更糟糕的例子是错误 2003。代码标识了发生了什么失败(例如,连接);它并不总是局限于一个失败的原因,试图将其减少到这样的程度会导致给出错误的建议。可以说,除非您查看并考虑 mysqli、libmysql、mysqlnd 和其他任何组合的整个代码库……否则您无法提供有意义的“扩展”错误。

标签: php mysql mysqli custom-errors error-list


【解决方案1】:

但我希望它显示:

你不想要它。仅仅因为you're not the sole user of your site

对于网站用户来说,这仍然是胡言乱语。更不用说一个诚实的用户会因为“提供无效的主机名”而感到困惑!
如果您使用任何成熟的网站,它永远不会显示类似的内容。只是一个通用的错误页面说“有一个错误,我们已经在上面了”。

对于程序员来说,除了实际错误消息之外的所有这些东西都只是无用的垃圾,会乱扔实际有用的信息。与其添加所有无用的东西,不如添加堆栈跟踪、实际的 SQL 查询和一些关键变量。再次向大佬学习:好的框架不仅会显示错误消息,还会显示错误发生的代码 sn-p。

恕我直言,我理解您改进 mysqli 的想法。但是您必须先检查您的场所。 运行一个实时站点一段时间以了解错误报告的真正目的非常重要。

想象一下,在您完成网站后,我将负责您的网站,它会发出这种错误。即使我不知道错误消息是什么意思,我也可以用谷歌搜索它。原始错误消息会给我 1000 个结果,而您的自定义错误消息会给我 nothing。请不要用您自己的话重述错误信息 - 您可能会丢失重要部分。你也不应该在错误信息中乱扔一些无用的描述。不用管它,确保程序员会阅读它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 2021-07-13
    • 2015-02-06
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多