Fatal error: Class 'MySQLi' not found

2019-01-01 09:15发布

问题:

I am doing a tutorial and am getting this error:

Fatal error: Class \'MySQLi\' not found (LONG URL) on line 8

The code on line 8 is:

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

I saw online someone said to see if it was turned on in my phpinfo(), but there wasn\'t anything listed in there under for \"mysqli\".

Also, I am running PHP version 5.2.5

回答1:

Sounds like you just need to install MySQLi.

If you think you\'ve done that and still have a problem, please post your operating system and anything else that might help.



回答2:

You can check if the mysqli libraries are present by executing this code:

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


回答3:

If you are on Ubuntu, run:

 sudo apt-get install php5-mysqlnd


回答4:

If you\'re calling \"new mysqli(..)\" from within a class that is namespaced, you might see a similar error Fatal error: Class \'foo\\bar\\mysqli\' not found in. The way to fix this is to explicitly set it to the root namespace with a preceding backslash like so:

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


回答5:

In addition to uncommenting the php_mysqli.dll extension in php.ini, also uncomment the extension_dir directive in php.ini and specify your location:

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

This made it work for me.



回答6:

My OS is Ubuntu. I solved this problem by using:

sudo apt-get install php5-mysql


回答7:

Seems like problem with your installation.

  • Have you installed MySQLi?
  • Have you activated it in php.ini?

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



回答8:

You can use a handwritten MYSQLi class, so you don\'t need to install mysqli. It\'s the only solution if you don\'t own the server.



回答9:

I thought I might help anybody with the same problem using Namesco servers. I have been trying to fix this problem after moving a database from my local server on home pc to namesco. They would not assist they said it was a coding issue.

  • However, it was simple to fix from their CPANEl LINUX hosting interface.
  • Click on php.
  • then click on php modules and from their list of preinstalled modules just click the box for mysqli.
  • Then click save. (No need to change code if it worked(s) on another server.)

Unfortunately, their support articles were a waste of time. After reading this I went to admin interface with a new determination.

Thank you, everybody.



回答10:

How to Enable mysqli in php.ini

  1. Edit/uncomment by removing \';\'(colon) the following config in php.ini: 1st (uncomment and add config): include_path = \"C:\\php\\includes\" 2nd (uncomment): extension_dir = \"ext\" 3rd (uncomment and edit config): extension=C:/PHP/ext/php_mysql.dll extension=C:/PHP/ext/php_mysqli.dll
  2. Restart the IIS server
  3. Make sure that mysql is running on the system.

How to load php.ini file

  1. Rename any one of the file php.ini-production/php.ini-development to php.ini from C:\\PHP(note now the extention will be ini i.e \"php.ini\").
  2. After renaming to php.ini file restart server
  3. See the changes in http://localhost/phpinfo.php


回答11:

Some distributions (such as Gentoo) support multiple installations of PHP, and you have to make sure you\'re using one with mysqli installed and enabled.

On Gentoo, I had installed a new PHP (with the mysqli USE flag enabled), but I needed to activate the new version of PHP (since the old one must have been missing 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


回答12:

<?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());
            }
        }
    }
?>


回答13:

This solved the initial \'not found\' error for me. Note the backslash, works like a dream now. Only necessary when using a namespace but who doesn\'t nowadays?

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



回答14:

I checked all above and it didn\'t work for me,

There are some steps I found.

I used PHP Version 5.5.9-1ubuntu4.17 on Ubuntu 14.04

First check the folder

#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

If it did not contain mysqli.ini, read other answer for installing it,

Open php.ini find extension_dir

In my case , I must set extension_dir = /usr/lib/php5/20121212

And restart apache2 : /ect/init.d/apache2 restart



回答15:

The PHP zip includes most of the commonly used extensions (*.dll on windows such as php_mysqli.dll) under the \\ext directory, however they are not enabled by default. You might be getting this Fatal Error when trying to use MySQLi:

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

To enable extensions, open php.ini (you might need to first copy php.ini-development as php.ini), and un-comment (or add) these two lines:

extension_dir = \"ext\"

And any particular extensions you are getting Fatal Errors for, i.e. for mysqli:

extension=mysqli


回答16:

on ubuntu:

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


回答17:

I found a solution for this problem after a long analysing procedure. After properly testing my php installation with the command line features I found out that the php is working well and could work with the mysql database. Btw. you can run code-files with php code with the command php -f filename.php
So I realized, it must something be wrong with the Apache.
I made a file with just the phpinfo() function inside.
Here I saw, that in the line
Loaded Configuration File
my config file was not loaded, instead there was mentioned (none).

Finally I found within the Apache configuration the entry
<IfModule php5_module>
PHPINIDir \"C:/xampp/php\"
</IfModule>

But I\'ve installed the PHP 7 and so the Apache could not load the php.ini file because there was no entry for that. I added

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

and after restart Apache all works well.

These code blocks above I found in my httpd-xampp.conf file. May it is somewhere else at your configuration.
In the same file I had changed before the settings for the php 7 as replacement for the php 5 version.

#
# 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\"

As you can see I\'ve the xampp package installed but this problem was just on the Apache side.

So I hope it helps someone to fix this problem.



标签: php mysqli