【问题标题】:MySQLi, PHP - try { .... } catch (...) { .... } not workingMySQLi,PHP - 尝试 { .... } catch (...) { .... } 不工作
【发布时间】:2017-03-11 13:21:37
【问题描述】:

我正在尝试使用 mysql 在 php7 上捕获连接错误,但它无法正常工作...

我不明白什么是不正确的:我使用的类似代码片段也可以正常工作...

这一定是我忘记的基本细节...... 我要扔$this->MyErrorFunction($e)

有人可以帮忙吗?

public function connect($credentialset) {
    #$this->driver = new \mysqli_driver();
    #$this->driver->report_mode = MYSQLI_REPORT_ALL;
    mysqli_report(MYSQLI_REPORT_STRICT); 
    try {
        $this->conn->real_connect(
                isset(self::$credentials[$credentialset]['host'])       ? self::$credentials[$credentialset]['host']        : ini_get("mysqli.default_host"),
                isset(self::$credentials[$credentialset]['user'])       ? self::$credentials[$credentialset]['user']        : ini_get("mysqli.default_user"),
                isset(self::$credentials[$credentialset]['password'])   ? self::$credentials[$credentialset]['password']    : ini_get("mysqli.default_pw"),
                isset(self::$credentials[$credentialset]['database'])   ? self::$credentials[$credentialset]['database']    : "",
                isset(self::$credentials[$credentialset]['port'])       ? self::$credentials[$credentialset]['port']        : ini_get("mysqli.default_port"),
                isset(self::$credentials[$credentialset]['socket'])     ? self::$credentials[$credentialset]['socket']      : ini_get("mysqli.default_socket"),
                isset(self::$credentials[$credentialset]['flag'])       ? self::$credentials[$credentialset]['flag']        : null
        );
        $charset = isset(self::$credentials[$credentialset]['charset']) ? self::$credentials[$credentialset]['charset'] : 'utf8mb4';
        $this->conn->set_charset($charset);
    } catch (Exception $e) {
        $this->MyErrorFunction($e);
    }
}

致命错误:未捕获的 mysqli_sql_exception:第 77 行 /oxygen-v2/php-bin/datadrivers/mysqlz/mysqlz.php 中的用户 'myinvaliduser'@'10.241.84.65'(使用密码:YES)的访问被拒绝

【问题讨论】:

    标签: php mysqli error-handling try-catch php-7


    【解决方案1】:

    \ó/ 我确信错误只是一件愚蠢的事情!

    解决了替换这段代码:

    } catch (Exception $e) {
        $this->MyErrorFunction($e);
    }
    

    通过此代码:

    } catch (\mysqli_sql_exception $e) {
        $this->MyErrorFunction($e);
    }
    

    代替Exception,我需要在主命名空间“\”中抛出mysqli_sql_exception

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-01
      相关资源
      最近更新 更多