Función no definida mysql_connect ()

83

He ejecutado aptitude install php5-mysql(y reiniciado MySQL / Apache 2), pero sigo recibiendo este error:

Error fatal: llamada a la función no definida mysql_connect () en /home/validate.php en la línea 21

phpinfo() dice que el archivo /etc/php5/apache2/conf.d/pdo_mysql.ini ha sido analizado.

usuario1765369
fuente
¿Qué hay de otras funciones integradas de PHP / MySql? ¿Funcionan?
samayo
Quizás no, ya que intenté ingresar un usuario / contraseña incorrecto y mi declaración 'o morir' no se muestra.
user1765369

Respuestas:

53

Bueno, esta es tu oportunidad! Parece que PDO está listo; usa eso en su lugar.

Intente verificar si se está cargando el módulo de extensión PHP MySQL:

<?php
    phpinfo();
?>

Si no está allí, agregue lo siguiente al php.iniarchivo:

extension=php_mysql.dll
wanovak
fuente
¿Es esta una mejor forma de conectarse a una base de datos? Lo investigaré, pero realmente me gustaría que esto funcione primero, ya que funcionó anteriormente hasta que me mudé a un nuevo servidor.
user1765369
2
Es. mysql_*Las funciones son peligrosas y obsoletas a partir de PHP 4.1. Verifique sus registros de errores de Apache y reinicie el servidor. ¿Eso funciona?
wanovak
Estoy usando xampp, después de agregar esa línea a php.ini, aparece el siguiente mensaje en apache error.log No se puede cargar la biblioteca dinámica '\\ xampp \\ php \\ ext \\ php_mysql.dll
bigpony
1
@defmx ¿Existe el archivo .dll en esa ruta? Si no, es necesario instalarlo.
wanovak
65

En caso de que ya esté usando PHP7, las funciones anteriormente obsoletas mysql_*se eliminaron por completo, por lo que debe actualizar su código utilizando las funciones o mysqli_*funciones PDO en su lugar.

Si eso no es posible, como solución temporal , creé un pequeño archivo de inclusión PHP, que recrea las mysql_*funciones antiguas con mysqli_*()-functions: fix_mysql.inc.php

rubo77
fuente
1
Solución perfecta para mi caso, no podía simplemente actualizar todavía y romper todo mi código existente. Sin embargo, la variable $ con global en su archivo fue un problema porque el archivo incluido no pudo leer la variable global de la clase principal en la que el constructor lo incluí. Sin embargo, simplemente creé una variable de conexión dentro de las funciones del archivo incluido donde fuera necesario. Ahora mi código funciona bien. Gracias.
zeeshan
esto fue muy útil para mí para hacer que una base de código anterior se ejecutara nuevamente en una plataforma de servidor más nueva. ¡salud!
mxmader
4
Gracias ... me salvó la vida donde la producción se actualizó a php7 y la aplicación php5 se rompió
geekonweb
Esta es una excelente solución para ahorrar tiempo al tener que actualizar una aplicación PHP antigua. Muchas gracias.
Joel Karunungan
gracias @ ubo77. salvó algunos dolores de cabeza en una base de código heredada.
mikoop
57

Veo que etiquetó esto con Ubuntu. Lo más probable es que el controlador MySQL (y posiblemente MySQL) no esté instalado. Suponiendo que tiene acceso SSH o terminal y permisos sudo, inicie sesión en el servidor y ejecute esto:

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

Si los paquetes MySQL o el paquete php5-mysql ya están instalados, esto los actualizará.


ACTUALIZAR

Dado que esta respuesta todavía recibe un clic ocasional, la actualizaré para incluir PHP 7 . PHP 7 requiere un paquete diferente para MySQL, por lo que querrá usar un argumento diferente para el comando apt-get.

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

Y lo que es más importante, mysql_connect()ha quedado obsoleto desde PHP v5.5.0. Consulte la documentación oficial aquí: PHP: mysql_connect ()

Sarcastron
fuente
No puedo localizar el paquete php7.0
strangetimes
Reemplazar 7.0 con 7.3
rubo77
46

Si alguien vino aquí con el problema de las imágenes oficiales de docker php , escriba el siguiente comando dentro del contenedor de docker.

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

Para obtener más información, consulte el enlace de la How to install more PHP extensionssección anterior (pero es un poco difícil para mí ...).

O este documento puede ayudarte.

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

kujiy
fuente
4
mysqles lo que quiero
deFreitas
17

También me quedé atascado con el mismo problema de MySQL_connect () indefinido. Intenté hacer cambios en el archivo PHP.ini pero me estaba dando el mismo error. Luego llegué a esta solución donde cambié mi código de funciones php depreciadas a funciones nuevas.

$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.

Espero que esto ayude . Esta solución me está funcionando correctamente.

EDITAR:

Si actualiza el php antiguo, necesita apt-get install php7.0-mysql

apurva sharma
fuente
7

En archivo php.ini

cambia esto

;extension=php_mysql.dll

dentro

extension=php_mysql.dll
Dominic Amal Joe F
fuente
6

Tratar:

<?php
  phpinfo();
?>

Ejecute la página y busque mysql. Si no lo encuentra, ejecute lo siguiente en el shell y reinicie el servidor Apache:

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

También asegúrese de tener todas las siguientes líneas sin comentar en algún lugar de su archivo apache2.conf (o en su archivo conf.d / php.ini), desde

;extension=php_mysql.so

a

extension=php_mysql.so
fortuna
fuente
4

Supongo que su instalación de PHP no se compiló con el soporte de MySQL.

Verifique su comando de configuración ( php -i | grep mysql). Deberías ver algo como '--with-mysql=shared,/usr'.

Puede consultar las instrucciones completas en http://php.net/manual/en/mysql.installation.php . Aunque, prefiero ir con la solución propuesta por @wanovak.

Aún así, creo que necesita compatibilidad con MySQL para usar PDO.

Muc
fuente
1

La pregunta está etiquetada con ubuntu, pero la solución para eliminar los comentarios extension=mysqli.dlles específica de Windows. Estoy confundido aquí?!, De todos modos, lo primero que ejecute <? php phpinfo ?>y busque mysql*bajo el Configurationencabezado. Si no ve algo así, significa que no lo ha instalado o habilitado php-mysql. Así que primero instalaphp-mysql

sudo apt get install php-mysql

Este comando se instalará php-mysqldependiendo del phpque ya hayas instalado, ¡así que no te preocupes por la versión!

Luego viene la solución específica de Unix, en el php.iniarchivo descomentar la línea

extension=msql.so

verificar que msql.soestá presente en /usr/lib/php/<timestamp_folder>, ELSE

extension=path/to/msql.so

Luego, finalmente reinicie los servicios apachey mysql, y ahora debería ver la mysqlsección bajo el Configrationsencabezado enphpinfo page

Dota 2
fuente
0

Recibí este error porque el proyecto en el que estaba trabajando se desarrolló en php 5.6 y, después de la instalación, el proyecto no pudo ejecutarse en php7.1.

Solo para cualquiera que use Vagrant con ubuntu / nginx, en el directorio nginx (/ etc / nginx /), hay un directorio llamado "sites-available" que contiene un archivo llamado como la url configurada para la máquina vagrant. En mi caso fue homestead.app. Dentro de este archivo hay una línea que dice algo como

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

Allí puede cambiar la versión de php a la deseada para ese sitio en particular.

Busqué en Google, pero no pude encontrar una respuesta simple que dijera dónde buscar y qué cambiar.

Espero que esto ayude a alguien. Gracias.

freifede
fuente
0

Para CentOS 7.8 y PHP 7.3

yum install rh-php73-php-mysqlnd

Y luego reinicie apache / php.

PJunior
fuente
-1

Si recibe el error como

Error fatal: llamada a la función no definida mysql_connect ()

Por favor inicie sesión en el cPanel >> Haga clic en Seleccionar versión de Php >> seleccione la extensión MYSQL

Abhishek Vaingade
fuente
4
No hay ninguna sugerencia en la pregunta de que el OP esté utilizando CPanel.
Quentin
-3

Debe haber algún error de sintaxis. Copie / pegue este código y vea si funciona:

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

Tuve el mismo mensaje de error. Resulta que estaba usando la msql_connect()función en lugar de mysql_connect().

Lara Croft
fuente
OP tiene la función mysql_connect indefinida y no msql_connect, por lo que no la escribió incorrectamente como sugiere.
logicbloke
-3

(Configuración de Windows mysql)

Paso 1: Vaya al Panel de control de Apache> Apache> Configuración> PHP.ini

Paso 2: Buscar en el Bloc de notas (Ctrl + F) para: ;extension_dir = ""(podría comentarse con a ;). Reemplace esta línea con: extension_dir = "C:\php\ext"(por favor, no necesita eliminar el ;al principio de la oración).

Paso 3: Busque: extension=php_mysql.dlly elimine el ;al principio.

Paso 4: guarde y reinicie su servidor HTTP Apache. (En Windows esto generalmente se hace a través de una interfaz de usuario)

Eso es :)

Si recibe errores sobre falta php_mysql.dll , probablemente deba descargar este archivo desde el sitio php.net o pecl.php.net. (Tenga en cuenta de dónde lo obtiene)

Más información sobre PHP: Instalación de extensiones en Windows - Manual

Piash Sarker
fuente
1
Si bien esto puede ser correcto para Windows, esta pregunta está etiquetada como Ubuntu, que ciertamente no tiene C:\\phpen el sistema.
tadman
@tadman no importa si eso es para Ubuntu, me ha funcionado hoy después de una nueva instalación en Windows.
Ravi Gaurav Pandey
1
@RaviGauravPandey La pregunta original se refería a Ubuntu. Que funcione para usted en Windows no es el punto. Esta es una respuesta de Windows a una pregunta de Ubuntu.
tadman