Неустранимая ошибка: класс «MySQLi» не найден

58

Я делаю учебник и получаю эту ошибку:

Неустранимая ошибка: Class 'MySQLi' не найден (LONG URL) в строке 8

Код в строке 8:

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

Я видел, что кто-то сказал, что он включен в моем phpinfo(), но там ничего не было указано для "mysqli".

Кроме того, я запускаю PHP версию 5.2.5

  • 0
    Вы можете использовать рукописный класс MYSQLi , поэтому вам не нужно устанавливать mysqli. Это единственное решение, если у вас нет сервера.
  • 0
    связанные: stackoverflow.com/questions/19305919/…
Теги:
mysqli

13 ответов

56
Лучший ответ

Похоже, вам просто нужно установить MySQLi.

Если вы считаете, что сделали это и все еще имеете проблемы, отправьте свою операционную систему и все, что может помочь.

  • 17
    На AWS вы просто запускаете sudo yum install php-mysqli
  • 0
    Для меня это было исправлено с помощью: apt-get install php7.0-mysql. Я бегу на Raspbian Stretch 9
Показать ещё 1 комментарий
39

Вы можете проверить, присутствуют ли библиотеки mysqli, выполнив этот код:

if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
    echo 'We don\'t have mysqli!!!';
} else {
    echo 'Phew we have it!';
}
  • 4
    Я все еще получаю "У нас нет mysqli !!!" даже после запуска `sudo apt-get install php5-mysqlnd`?
  • 0
    Я получаю «Уф, у нас это есть, но я продолжаю получать ту же ошибку, которую класс« msqli »не нашел в ... какие-нибудь идеи?
30

Если вы находитесь на Ubuntu, запустите:

 sudo apt-get install php5-mysqlnd
  • 5
    И не забудьте перезапустить Apache после этого!
  • 0
    @fracz Перезапуск Apache - это часть, которую я забыл. Я только перезапустил MySQL. Благодарю.
Показать ещё 3 комментария
10

Если вы вызываете "новый 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());
  • 1
    Это должно быть первое, на что нужно посмотреть.
8

В дополнение к раскомментированию расширения php_mysqli.dll в php.ini, также раскомментируйте директиву extension_dir в php.ini и укажите свое местоположение:

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

Это заставило его работать на меня.

  • 0
    Это сработало для меня, но с ./ext который является относительным путем. И мне пришлось переименовать php.ini-development в php.ini и раскомментировать в этом extension=php_mysqli.dll файла extension=php_mysqli.dll . О, мальчик, я не скучал по тебе PHP.
4

My OS Ubuntu. Я решил эту проблему, используя:

sudo apt-get install php5-mysql
2

Похоже на проблему с вашей установкой.

  • Установили ли вы MySQLi?
  • Вы активировали его в php.ini?

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

1

Вы можете использовать рукописный класс MYSQLi, поэтому вам не нужно устанавливать mysqli. Это единственное решение, если вы не владеете сервером.

0

Я думал, что могу помочь кому-либо с той же проблемой, используя серверы Namesco. Я пытался решить эту проблему после перемещения базы данных с моего локального сервера на домашнем компьютере в namesco. Они не помогли бы им сказать, что это проблема кодирования.

  • Однако было легко исправить их хостинг CPANEl LINUX интерфейс.
  • Нажмите на php.
  • затем щелкните на php-модулях и из их списка предустановленных модулей просто щелкните поле для mysqli.
  • Затем нажмите "Сохранить". (Не нужно менять код, если он работал на другом сервере.)

К сожалению, их статьи поддержки были пустой тратой времени. Прочитав это, я пошел в админ-интерфейс с новым определением.

Спасибо, всем.

0

Я проверил все выше, и это не сработало для меня,

Есть несколько шагов, которые я нашел.

Я использовал PHP Version 5.5.9-1ubuntu4.17 на Ubuntu 14.04

Сначала проверьте папку

#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

0

Это решило исходную "не найденную" ошибку для меня. Обратите внимание на обратную косую черту, теперь это выглядит как сон. Нужно только при использовании пространства имен, но кто не сейчас?

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

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

Некоторые дистрибутивы (такие как Gentoo) поддерживают несколько установок PHP, и вы должны убедиться, что используете один с mysqli установлен и включен.

В Gentoo я установил новый PHP (с включенным флажком USE mysqli), но мне нужно было активировать новую версию 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню