web-dev-qa-db-fra.com

Erreur fatale: la classe 'MySQLi' est introuvable

Je fais un tutoriel et j'obtiens cette erreur:

Erreur fatale: la classe 'MySQLi' n'a pas été trouvée (LONG URL) à la ligne 8

Le code sur la ligne 8 est:

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

J'ai vu en ligne quelqu'un a dit de voir si cela était activé dans mon phpinfo (), mais il n'y avait rien de répertorié dans la sous "mysqli".

De plus, je lance PHP version 5.2.5

82
Tylor

On dirait que vous avez juste besoin de installer MySQLi .

Si vous pensez que vous avez fait cela et que vous rencontrez toujours un problème, publiez votre système d’exploitation et tout ce qui pourrait aider à le diagnostiquer davantage.

77
Greg

Vous pouvez vérifier si les bibliothèques mysqli sont présentes en exécutant ce code:

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

Si vous êtes sur bunt , lancez:

 Sudo apt-get install php5-mysqlnd
35
anshuman

Si vous appelez "new mysqli (..)" depuis une classe qui est namespaced, une erreur similaire risque de se produire Fatal error: Class 'foo\bar\mysqli' not found in. Pour résoudre ce problème, définissez-le explicitement sur l'espace de noms racine avec une barre oblique inverse précédente, comme suit:

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

En plus de supprimer les commentaires de l'extension php_mysqli.dll dans php.ini, supprimez également les commentaires de la directive extension_dir dans php.ini = et précisez votre localisation:

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

Cela a fonctionné pour moi.

10
catawampus

Mon OS est bunt . J'ai résolu ce problème en utilisant:

Sudo apt-get install php5-mysql
5
user3839088

Cela ressemble à un problème avec votre installation.

  • Avez-vous installé MySQLi?
  • L'avez-vous activé dans php.ini?

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

2
vartec

Je pensais pouvoir aider n'importe qui avec le même problème en utilisant les serveurs Namesco. J'essayais de résoudre ce problème après avoir déplacé une base de données de mon serveur local sur mon ordinateur personnel vers namesco. Ils n’aideraient pas, ils ont dit que c’était un problème de codage.

  • Cependant, il était simple de les réparer à partir de leur interface d’hébergement CPANEl LINUX.
  • Cliquez sur php.
  • puis cliquez sur les modules php et dans leur liste de modules préinstallés, cliquez simplement sur la boîte pour mysqli.
  • Puis cliquez sur Enregistrer. (Pas besoin de changer de code si cela a fonctionné sur un autre serveur.)

Malheureusement, leurs articles de soutien ont été une perte de temps. Après avoir lu cela, je suis allé à l'interface d'administration avec une nouvelle détermination.

Merci tout le monde.

1
John

Comment activer mysqli dans php.ini

  1. Éditez/décommentez en supprimant ';' (deux points) de la configuration suivante dans php.ini: 1st (décommentez et ajoutez config): include_path = "C:\php\includes " 2nd (sans commentaire): extension_dir =" ext " 3ème (décommenter et modifier la configuration): extension = C: /PHP/ext/php_mysql.dll extension = C: /PHP/ext/php_mysqli.dll
  2. Redémarrez le serveur IIS
  3. Assurez-vous que mysql est en cours d'exécution sur le système.

Comment charger le fichier php.ini

  1. Renommez n'importe lequel des fichiers php.ini-production/php.ini-development en php.ini à partir de C:\PHP (notez que l'extension sera ini, c'est-à-dire "php.ini").
  2. Après avoir renommé le fichier php.ini, redémarrez le serveur.
  3. Voir les modifications dans http: //localhost/phpinfo.php
1
Gani

J'ai vérifié tout ce qui précède et cela n'a pas fonctionné pour moi,

Il y a quelques étapes que j'ai trouvées.

J'ai utilisé PHP Version 5.5.9-1ubuntu4.17 sur buntu 14.04

D'abord vérifier le dossier

#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

Si elle ne contient pas mysqli.ini, lisez l’autre réponse pour l’installer,

Ouvert php.ini find extension_dir

Dans mon cas, je dois mettre extension_dir = /usr/lib/php5/20121212

Et redémarrez Apache2: /ect/init.d/Apache2 restart

0
vanduc1102

J'ai trouvé une solution à ce problème après une longue procédure d'analyse. Après avoir testé correctement mon installation php avec les fonctionnalités de ligne de commande, j'ai découvert que le php fonctionnait bien et pouvait fonctionner avec la base de données mysql. Btw. vous pouvez exécuter des fichiers de code avec du code php avec la commande php -f nomfichier.php
J'ai donc compris qu'il devait y avoir un problème avec Apache.
J'ai créé un fichier contenant uniquement la fonction phpinfo ().
Ici, j'ai vu que dans la ligne
Fichier de configuration chargé
Mon fichier de configuration n'a pas été chargé, il a été mentionné (aucun).

Enfin, j'ai trouvé dans la configuration Apache l'entrée
<IfModule php5_module>
PHPINIDir "C:/xampp/php"
</IfModule>

Mais j'ai installé le PHP 7 et Apache n'a donc pas pu charger le fichier php.ini car il n'y avait pas d'entrée pour cela. J'ai ajouté

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

et après redémarrage Apache tout fonctionne bien.

Ces blocs de code ci-dessus se trouvent dans mon fichier httpd-xampp.conf. Puisse-t-il être ailleurs dans votre configuration.
Dans le même fichier que j'avais modifié avant les réglages du php 7 en remplacement de la version 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"

Comme vous pouvez le constater, le paquet xampp est installé mais ce problème ne concerne que Apache.

J'espère donc que cela aidera quelqu'un à résoudre ce problème.

0

Le PHP Zip inclut la plupart des extensions couramment utilisées (* .dll sur des fenêtres telles que php_mysqli.dll) dans le répertoire\ext, mais elles ne sont pas activées par défaut. Erreur fatale lors d'une tentative d'utilisation de MySQLi:

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

Pour activer les extensions, ouvrez php.ini (vous devrez peut-être d'abord copier php.ini-development en tant que php.ini), puis supprimez le commentaire (ou ajoutez) ces deux lignes:

extension_dir = "ext"

Et toutes les extensions particulières pour lesquelles vous obtenez des erreurs fatales, c'est-à-dire mysqli:

extension=mysqli
0
Griknok

Certaines distributions (telles que Gentoo ) supportent plusieurs installations de PHP et vous devez vous assurer que vous en utilisez une avec mysqli installé et activé.

Sur Gentoo, j’avais installé un nouveau PHP (avec l’indicateur USE mysqli activé)), mais j’avais besoin d’activer la nouvelle version de PHP (depuis l’ancien il fallait manquer 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
Jared Thirsk

sur Ubuntu:

Sudo apt-get install php-mysql
Sudo service Apache2 restart
0
vishalknishad

Cela a résolu l'erreur initiale 'pas trouvé' pour moi. Notez la barre oblique inverse, fonctionne comme un rêve maintenant. Nécessaire uniquement lors de l'utilisation d'un espace de noms, mais qui ne le fait pas aujourd'hui?

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

0
Rob Baartwijk
<?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
hari

Sur une nouvelle installation de PHP, supprimez ; avant extension_dir dans php.ini.

0
Andrei