Я делаю учебник и получаю эту ошибку:
Неустранимая ошибка: Class 'MySQLi' не найден (LONG URL) в строке 8
- Перемещение в mysqli, mysql_result
- php5.3 - mysqli_stmt: bind_params с предупреждениями call_user_func_array
- Почему я получаю ошибку «Команды не синхронизированы; вы не можете запустить эту команду сейчас "
- PHP.ini вызывает Предупреждение: mysqli_error () ожидает, что параметр 1 будет mysqli, null указан в / sys / index.php в строке 19
- Подключения PHP к MySQL SSL
Код в строке 8:
$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name) or die(mysqli_error());
Я видел, как кто-то сказал, что он включен в моем phpinfo (), но для «mysqli» не было ничего перечисленного.
Кроме того, я запускаю PHP версию 5.2.5
Похоже, вам просто нужно установить MySQLi .
Если вы считаете, что сделали это и все еще имеете проблемы, отправьте свою операционную систему и все остальное, что может помочь.
Вы можете проверить, присутствуют ли библиотеки mysqli, выполнив этот код:
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) { echo 'We don\'t have mysqli!!!'; } else { echo 'Phew we have it!'; }
Если вы находитесь на Ubuntu , запустите:
sudo apt-get install php5-mysqlnd
Если вы вызываете «новый 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());
В дополнение к раскомментированию расширения php_mysqli.dll в php.ini , также раскомментируйте директиву extension_dir в php.ini и укажите свое местоположение:
extension_dir = "C:\software\php\dist\ext"
Это заставило его работать на меня.
Моя ОС – Ubuntu . Я решил эту проблему, используя:
sudo apt-get install php5-mysql
Кажется, проблема с вашей установкой.
Вы можете использовать рукописный класс MYSQLi , поэтому вам не нужно устанавливать mysqli. Это единственное решение, если вы не владеете сервером.
Некоторые дистрибутивы (например, 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
<?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()); } } } ?>
Это решило исходную «не найденную» ошибку для меня. Обратите внимание на обратную косую черту, теперь это выглядит как сон. Нужно только при использовании пространства имен, но кто не сейчас?
$ mysqli = new \ MySQLi ($ db_server, $ db_user, $ db_pass, $ db_name) или die (mysqli_error ());
Я проверил все выше, и это не сработало для меня,
Есть несколько шагов, которые я нашел.
Я использовал 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
Я думал, что могу помочь кому-либо с той же проблемой, используя серверы Namesco. Я пытался решить эту проблему после перемещения базы данных с моего локального сервера на домашнем компьютере в namesco. Они не помогли бы им сказать, что это проблема кодирования.
К сожалению, их статьи поддержки были пустой тратой времени. Прочитав это, я пошел в админ-интерфейс с новым определением.
Спасибо всем.