未定义的函数mysql_connect()

use*_*369 68 php mysql ubuntu mysql-connect undefined-function

我已经运行aptitude install php5-mysql(并重新启动MySQL/Apache 2),但我仍然收到此错误:

致命错误:在第21行的/home/validate.php中调用未定义的函数mysql_connect()

phpinfo() 说/etc/php5/apache2/conf.d/pdo_mysql.ini文件已被解析.

Sar*_*ron 52

我看到你用Ubuntu标记了这个.很可能没有安装MySQL驱动程序(可能还有MySQL).假设您具有SSH或终端访问权限和sudo权限,请登录服务器并运行以下命令:

sudo apt-get install mysql-server mysql-client php5-mysql
Run Code Online (Sandbox Code Playgroud)

如果已安装MySQL包或php5-mysql包,则会更新它们.


UPDATE

由于这个答案仍然偶尔会被点击,我将更新它以包含PHP 7.PHP 7需要一个不同的MySQL包,因此您需要为apt-get命令使用不同的参数.

sudo apt-get install mysql-server mysql-common php7.0 php7.0-mysql
Run Code Online (Sandbox Code Playgroud)

而且重要的是,mysql_connect()自PHP v5.5.0以来已被弃用.请参阅此处的官方文档:PHP:mysql_connect()


wan*_*vak 48

嗯,这是你的机会!看起来PDO准备好了; 用它代替.

尝试检查是否正在加载PHP MySQL扩展模块:

<?php
    phpinfo();
?>
Run Code Online (Sandbox Code Playgroud)

如果不存在,请将以下内容添加到php.ini文件中:

extension=php_mysql.dll
Run Code Online (Sandbox Code Playgroud)

  • 它是.从PHP 4.1开始,`mysql_*`函数很危险并且已弃用.检查Apache错误日志并重新启动服务器.那样有用吗? (2认同)

rub*_*o77 40

如果您已经使用PHP7,以前不推荐使用的函数mysql_*已被完全删除,因此您应该使用PDO函数或mysqli_*函数来更新代码.

如果这是不可能的,作为一种解决方法,我创建了一个小的PHP包含文件,它mysql_*使用-functions重新创建旧函数mysqli_*():fix_mysql.inc.php

  • 谢谢..它救了我的命,生产升级到 php7 和 php5 应用程序崩溃了 (4认同)
  • 对于我的情况来说是完美的解决方案,我不能只是升级并破坏我所有现有的代码。但是,文件中的全局 $con 变量是一个问题,因为包含的文件无法读取我包含它的构造函数的父类的全局变量。但是,我只是在需要时在包含文件的函数内创建了一个连接变量。现在我的代码工作正常。谢谢。 (3认同)

kuj*_*jiy 37

如果有人来到这里解决了docker php官方图片的问题,请在docker容器中输入以下命令.

$ docker-php-ext-install mysql mysqli pdo pdo_mysql
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅上面的链接How to install more PHP extensions部分(但这对我来说有点困难......).

或者这个文档可以帮助你.

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

  • `mysql`就是我想要的 (3认同)

小智 10

我也遇到了同样的问题,未定义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.
Run Code Online (Sandbox Code Playgroud)

我希望这能帮到您 .这个解决方案正确地为我工作.


for*_*une 5

尝试:

<?php
  phpinfo();
?>
Run Code Online (Sandbox Code Playgroud)

运行该页面并搜索mysql.如果未找到,请在shell中运行以下命令并重新启动Apache服务器:

sudo apt-get install mysql-server mysql-client php5-mysql
Run Code Online (Sandbox Code Playgroud)

还要确保在apache2.conf(或在conf.d/php.ini)文件中的某处取消注释以下所有行,

;extension=php_mysql.so
Run Code Online (Sandbox Code Playgroud)

extension=php_mysql.so
Run Code Online (Sandbox Code Playgroud)


小智 5

在php.ini文件中

改变这个

;extension=php_mysql.dll
Run Code Online (Sandbox Code Playgroud)

进入

extension=php_mysql.dll
Run Code Online (Sandbox Code Playgroud)