首页 文章

致命错误:找不到类'MySQLi'

提问于
浏览
76

我正在做一个教程,我收到此错误:

致命错误:第8行找不到类'MySQLi'(LONG URL)

第8行的代码是:

$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name) or die(mysqli_error());

我在网上看到有人说看看它是否在我的phpinfo()中打开了,但是没有列出“mysqli”下面的任何内容 .

另外,我正在运行PHP 5.2.5版

17 回答

  • 1

    好像你的安装有问题 .

    • 你安装了MySQLi吗?

    • 你有没有在php.ini中激活它?

    http://www.php.net/manual/en/mysqli.installation.php

  • 2

    您可以使用a handwritten MYSQLi class,因此如果您不拥有服务器,则不要使用't need to install mysqli. It' .

  • 72

    除了取消注释php.ini中的php_mysqli.dll扩展,还要取消注释php.ini中的extension_dir指令并指定你的位置:

    extension_dir = "C:\software\php\dist\ext"
    

    这使它对我有用 .

  • 0

    我的OSUbuntu . 我使用以下方法解决了这个问题

    sudo apt-get install php5-mysql
    
  • 0

    听起来你只需要install MySQLi .

    如果您认为自己已经这样做并且仍有问题,请发布您的操作系统以及其他可能有用的内容 .

  • 9

    您可以通过执行以下代码来检查mysqli库是否存在:

    if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
        echo 'We don\'t have mysqli!!!';
    } else {
        echo 'Phew we have it!';
    }
    
  • 0

    如果您在Ubuntu,请运行:

    sudo apt-get install php5-mysqlnd
    
  • 0

    如果您在命名空间的类中调用"new mysqli(..)",则可能会看到类似的错误 Fatal error: Class 'foo\bar\mysqli' not found in . 修复此问题的方法是使用前面的反斜杠将其显式设置为根命名空间,如下所示:

    <?php 
    $mysqli = new \MySQLi($db_server, $db_user, $db_pass, $db_name) or die(mysqli_error());
    
  • 35

    我想我可以使用Namesco服务器帮助任何有同样问题的人 . 将数据库从家用PC上的本地服务器移动到namesco后,我一直在尝试解决此问题 . 他们不会协助他们说这是一个编码问题 .

    • 但是,从CPANEl LINUX主机界面修复它很简单 .

    • 点击php .

    • 然后点击php模块,从他们预装的模块列表中单击mysqli的框 .

    • 然后单击“保存” . (如果代码在另一台服务器上运行,则无需更改代码 . )

    不幸的是,他们的支持文章是浪费时间 . 读完这篇文章后,我带着一个新的决心去了管理界面 .

    谢谢大家 .

  • 5

    如何在php.ini中启用mysqli

    • 编辑/取消注释删除';'(冒号)php.ini中的以下配置: 1st (取消注释并添加配置):include_path = "C:\php\includes" 2nd (取消注释):extension_dir = "ext" 3rd (取消注释并编辑配置):extension = C:/ PHP / ext / php_mysql.dll扩展名= C:/PHP/ext/php_mysqli.dll

    • 重新启动IIS服务器

    • 确保系统上正在运行mysql .

    如何加载php.ini文件

    • 将文件php.ini-production / php.ini-development中的任何一个从C:\ PHP重命名为php.ini(注意现在扩展名为ini,即"php.ini") .

    • 重命名为php.ini文件后重启服务器

    • 查看http://localhost/phpinfo.php中的更改

  • 1

    某些发行版(例如Gentoo)支持多个PHP安装,您必须确保使用安装并启用了mysqli的发行版 .

    在Gentoo上,我安装了一个新的PHP(启用了mysqli USE标志),但我需要激活新版本的PHP(因为旧版本必须缺少mysqli):

    # eselect php list apache2
      [1]   php5.3 *
      [2]   php5.5
    # eselect php set apache2 2
    You have to run `/etc/init.d/apache2 restart' for the changes to take effect
    # /etc/init.d/apache2 restart
    
  • 0
    <?php  /* If the error is due to calling mysqli in a class */
    
        class dbconnect extends mysqli{
    
            private $host = 'localhost';
            private $user = 'root';
            private $pass = '';
            private $db = 'test';
    
            public function __construct() {
                parent::__construct($this->host, $this->user, $this->pass, $this->db);
    
                if (mysqli_connect_error()) {
                    die('Connect Error (' . mysqli_connect_errno() . ') ' .
                        mysqli_connect_error());
                }
            }
        }
    ?>
    
  • 0

    这为我解决了最初的“未找到”错误 . 注意反斜杠,就像现在的梦想一样 . 只有在使用命名空间时才需要,但现在却没有?

    $ mysqli = new \ MySQLi($ db_server,$ db_user,$ db_pass,$ db_name)或die(mysqli_error());

  • 14

    我检查了上面的所有内容,它对我不起作用,

    我找到了一些步骤 .

    我在 Ubuntu 14.04 上使用 PHP Version 5.5.9-1ubuntu4.17

    首先检查文件夹

    #ls /etc/php5/mods-available/
    json.ini  mcrypt.ini  mysqli.ini  mysql.ini  mysqlnd.ini  opcache.ini  pdo.ini  pdo_mysql.ini  readline.ini  xcache.ini
    

    如果它不包含 mysqli.ini ,请阅读安装它的其他答案,

    打开 php.ini 找到 extension_dir

    在我的情况下,我必须设置 extension_dir = /usr/lib/php5/20121212

    并重启apache2: /ect/init.d/apache2 restart

  • 41

    PHP zip包含\ ext目录下的大多数常用扩展(Windows上的* .dll,如php_mysqli.dll),但默认情况下不启用它们 . 尝试使用MySQLi时,您可能会收到此致命错误:

    ( ! ) Fatal error: Uncaught Error: Class 'mysqli' not found in C:\myProject\ class.Database.php on line 24
    

    要启用扩展,请打开php.ini(您可能需要先将php.ini-development复制为php.ini),然后取消注释(或添加)这两行:

    extension_dir = "ext"
    

    你正在获得致命错误的任何特定扩展,即对于mysqli:

    extension=mysqli
    
  • 1

    在ubuntu上:

    sudo apt-get install php-mysql
    sudo service apache2 restart
    
  • 0

    经过长时间的分析,我找到了解决这个问题的方法 . 在使用命令行功能正确测试我的php安装后,我发现php运行良好,可以使用mysql数据库 . 顺便说一句 . 你可以使用php -f filename.php命令运行带有php代码的代码文件
    所以我意识到,Apache必定存在问题 .
    我只用了phpinfo()函数制作了一个文件 .
    在这里,我看到,在线
    Loaded Configuration File
    我的配置文件没有加载,而是提到(无) .

    最后我在Apache配置中找到了条目
    <IfModule php5_module>
    PHPINIDir "C:/xampp/php"
    </IfModule>

    但我已经安装了PHP 7,因此Apache无法加载php.ini文件,因为没有条目 . 我补充道

    <IfModule php7_module>
        PHPINIDir "C:/xampp/php"
    </IfModule>
    

    重新启动后,Apache一切正常 .

    我在httpd-xampp.conf文件中找到了上面的代码块 . 可能它在你配置的其他地方 .
    我在php 7的设置之前更改了同一个文件,作为php 5版本的替代品 .

    #
    # PHP-Module setup
    #
    #LoadFile "C:/xampp/php/php5ts.dll"
    #LoadModule php5_module "C:/xampp/php/php5apache2_4.dll"
    LoadFile "C:/xampp/php/php7ts.dll"
    LoadModule php7_module "C:/xampp/php/php7apache2_4.dll"
    

    正如您所看到的,我已经安装了xampp软件包,但这个问题只是在Apache端 .

    所以我希望它可以帮助别人解决这个问题 .

相关问题