如果未启用 mysqli,PHP 不会抛出异常

标签 php mysqli php-7

我有

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once "configuration.php";
header('Content-Type: application/json');
try
{   
    $mysqli = new mysqli(MYSQL_SERVER, MYSQL_USERNAME, MYSQL_PASSWORD, MYSQL_DATABASE);
    $mysqli->set_charset("utf8");
} catch (Exception $e) {
    echo json_encode(
        array(
            'msg' => $e->getMessage()
        )
    );
}

如果 mysqli 未启用,则它不会捕获错误:

Fatal error: Uncaught Error: Class 'mysqli' not found in C:\test\db_connect.php:8
Stack trace:
#0 C:\test\getContacts.php(2): require_once()
#1 {main} thrown in C:\test\db_connect.php on line 8

我该怎么做才能捕获错误?

这个我试过了,但是没用:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once "configuration.php";
header('Content-Type: application/json');
try
{
    if(!extension_loaded('mysqli'))
    {
        throw new Exception('mysqli is not enabled');
    }

    $mysqli = new mysqli(MYSQL_SERVER, MYSQL_USERNAME, MYSQL_PASSWORD, MYSQL_DATABASE);
    $mysqli->set_charset("utf8");
} catch (Exception $e) {
    echo json_encode(
        array(
            'msg' => $e->getMessage()
        )
    );
}

这个并没有停顿,继续执行脚本。

{"msg":"mysqli is not enabled"}
Notice: Undefined variable: mysqli in C:\test\getContacts.php on line 99

Fatal error: Uncaught Error: Call to a member function query() on null in C:\test\getContacts.php:99 Stack trace: #0 {main} thrown in C:\test\getContacts.php on line 99

最佳答案

奇怪的是它不会被安装,但如果你自己安装,我想它可以被省略。我会检查程序函数是否存在

if(!function_exists('mysqli_connect')) {
    throw new Exception('mysqli is not enabled');
}

关于如果未启用 mysqli,PHP 不会抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38838079/

相关文章:

php - 如何将这 3 个查询合并为一个 MySQL 查询?

php - 如何使用 PHP 原生函数和 Android 获取文件

php - 使用魔法方法有什么缺点?如何在 child 类(class)中缩写它们?

php - 准备语句返回 false 但插入成功

php - 如何构造一个sql查询来获取用户之间共同好友的数量?

php - PHP 函数 in_array(...) 有什么问题?

php - 从 postgres 获取数据到 php 再到 html(使用 ajax)

php - 带有别名的多个查询 Mysql

php - 对分支重置组的反向引用

centos - 在 centOS 上升级 PHP 7.0.0 RC1 到 PHP 7.0 当前稳定版?