Неопределенная функция mysql connect()


Я запустил aptitude install php5-mysql (и перезапустил MySQL/Apache 2), но я все еще получаю эту ошибку:

Неустранимая ошибка: Вызов неопределенной функции mysql_connect() в /home/validate.php в строке 21

phpinfo() говорит, что файл /etc/php5/apache2/conf.d/pdo_mysql.ini был проанализирован.

Author: Peter Mortensen, 2012-12-11

13 answers

Что ж, это твой шанс! Похоже, что PDO готов; используйте это вместо этого.

Попробуйте проверить, загружается ли модуль расширения PHP MySQL:

<?php
    phpinfo();
?>

Если его там нет, добавьте следующее в файл php.ini:

extension=php_mysql.dll
 39
Author: wanovak, 2016-02-26 14:40:36

Я вижу, что вы пометили это с помощью Ubuntu. Скорее всего, драйвер MySQL (и, возможно, MySQL) не установлен. Предполагая, что у вас есть SSH или разрешения доступа к терминалу и sudo, войдите на сервер и выполните следующее:

sudo apt-get install mysql-server mysql-client php5-mysql

Если пакеты MySQL или пакет php5-mysql уже установлены, это приведет к их обновлению.


ОБНОВЛЕНИЕ

Поскольку этот ответ все еще получает случайный щелчок, я собираюсь обновить его, включив PHP 7. PHP 7 требуется другой пакет для MySQL, поэтому вы захотите использовать другой аргумент для команды apt-get.

sudo apt-get install mysql-server mysql-common php7.0 php7.0-mysql

И, что важно, mysql_connect() устарел с версии PHP 5.5.0. Обратитесь к официальной документации здесь: PHP: mysql_connect()

 43
Author: Sarcastron, 2017-10-16 09:39:46

Если кто-то пришел сюда с проблемой официальных изображений php docker, введите команду ниже в контейнере docker.

$ docker-php-ext-install mysql mysqli pdo pdo_mysql

Для получения дополнительной информации, пожалуйста, обратитесь к ссылке выше раздела How to install more PHP extensions (Но для меня это немного сложно...).

Или этот документ может вам помочь.

Https://docs.docker.com/samples/library/php/

 27
Author: kujiy, 2018-03-15 09:40:55

В случае, если вы уже используете PHP7, ранее устаревшие функции mysql_* были полностью удалены, поэтому вам следует обновить свой код, используя вместо этого PDO-функции или функции mysqli_*.

Если это невозможно, в качестве обходного пути Я создал небольшой файл включения, который воссоздает старые функции с помощью mysqli_*()-функций: fix_mysql.inc.php

 22
Author: rubo77, 2017-02-08 02:34:44

Попробуйте:

<?php
  phpinfo();
?>

Запустите страницу и найдите mysql. Если не найдено, выполните следующие действия в командной оболочке и перезапустите сервер Apache:

sudo apt-get install mysql-server mysql-client php5-mysql

Также убедитесь, что все следующие строки раскомментированы где-нибудь в файле apache2.conf (или в файле conf.d/php.ini), начиная с

;extension=php_mysql.so

До

extension=php_mysql.so
 5
Author: fortune, 2016-02-26 14:43:23

Я также столкнулся с той же проблемой неопределенного MySQL_connect().Я попытался внести изменения в файл PHP.ini, но он выдавал мне ту же ошибку. Затем я пришел к этому решению, в котором я изменил свой код с устаревших функций php на новые функции.

$con=mysqli_connect($host,$user,$password);

mysqli_select_db($con,dbname); 
//To select the database

session_start(); //To start the session

$query=mysqli_query($con,your query); 
//made query after establishing connection with database.

Я надеюсь, что это поможет вам. Это решение правильно работает для меня.

 5
Author: apurva sharma, 2017-08-12 13:15:13

Я предполагаю, что ваша установка PHP не была скомпилирована с поддержкой MySQL.

Проверьте свою команду настройки (php -i | grep mysql). Вы должны увидеть что-то вроде '--with-mysql=shared,/usr'.

Вы можете проверить наличие полных инструкций по адресу http://php.net/manual/en/mysql.installation.php . Хотя я бы предпочел пойти с решением, предложенным @wanovak.

Тем не менее, я думаю, что вам нужна поддержка MySQL, чтобы использовать PDO.

 4
Author: Muc, 2016-02-26 14:43:59

Вопрос помечен ubuntu, но решение не комментировать extension=mysqli.dll специфично для Windows. Я здесь в замешательстве?! В любом случае, первым делом запустите <? php phpinfo ?> и найдите mysql* под заголовком Configuration. Если вы не видите такой вещи, это означает, что вы не установили или не включили php-mysql. Поэтому сначала установите php-mysql

sudo apt get install php-mysql

Эта команда установит php-mysql в зависимости от php, который вы уже установили, поэтому не беспокойтесь о версии!!.

Затем идет unix конкретное решение, в файле php.ini отмените комментарий к строке

extension=msql.so

Убедитесь, что msql.so присутствует в /usr/lib/php/<timestamp_folder>, ОСТАЛЬНОЕ

extension=path/to/msql.so

Затем, наконец, перезапустите службы apache и mysql, и теперь вы должны увидеть раздел mysql под заголовком Configrations в phpinfo page

 1
Author: Dota2, 2016-12-09 16:48:53

В файле php.ini

Измените это

;extension=php_mysql.dll

В

extension=php_mysql.dll
 0
Author: Dominic Amal Joe F, 2016-09-20 13:20:03

Я получал эту ошибку, потому что проект, над которым я работал, был разработан на php 5.6, и после установки проект не смог запуститься на php7.1.

Только для тех, кто использует Vagrant с ubuntu/nginx, в каталоге nginx(/etc/nginx/) есть каталог с именем "доступные сайты", который содержит файл с именем, подобным URL-адресу, настроенному для машины vagrant. В моем случае это было приложение homestead.app. В этом файле есть строка, которая говорит что-то вроде

    fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;

Там вы можете изменить версию php на желаемую для данного конкретного сайта.

Погуглил это, но на самом деле не смог найти простого ответа, в котором говорилось бы, где искать и что менять.

Надеюсь, что это кому-нибудь поможет. Спасибо.

 0
Author: freifede, 2017-08-09 19:16:21

Если вы получаете ошибку как

Неустранимая ошибка: Вызов неопределенной функции mysql_connect()

Пожалуйста, войдите в панель управления >> Нажмите на кнопку Выбрать версию Php >> выберите расширение MYSQL

 -2
Author: Abhishek Vaingade, 2016-05-04 08:55:39

(Конфигурация Windows mysql)

Шаг 1: Перейдите В Панель Управления Apache > Apache > Конфигурация > PHP.ini

Шаг 2: Выполните поиск в блокноте (Ctrl+F) Для: ;extension_dir = "" (можно прокомментировать с помощью ;). Замените эту строку на: extension_dir = "C:\php\ext" (пожалуйста, не нужно удалять ; в начале предложения).

Шаг 3: Найдите: extension=php_mysql.dll и удалите ; в начале.

Шаг 4: Сохраните и перезапустите HTTP-сервер Apache. (В Windows это обычно делается с помощью пользовательского интерфейса)

Вот и все:)

Если вы получаете сообщения об ошибках, связанных с отсутствием php_mysql.dll, вам, вероятно, потребуется загрузить этот файл либо с php.net сайт или pecl.php.net . (Пожалуйста, будьте осторожны с тем, откуда вы это взяли)

Дополнительная информация о PHP: Установка расширений в Windows - Руководство

 -2
Author: Piash Sarker, 2018-05-01 09:12:18

Должно быть, произошла какая-то синтаксическая ошибка. Скопируйте/вставьте этот код и посмотрите, работает ли он:

<?php
    $link = mysql_connect('localhost', 'root', '');
    if (!$link) {
        die('Could not connect:' . mysql_error());
    }
    echo 'Connected successfully';
    ?

У меня было такое же сообщение об ошибке. Оказывается, я использовал функцию msql_connect() вместо mysql_connect().

 -3
Author: lara_croft, 2016-02-26 14:45:09