致命错误:调用未定义函数 mysql_connect()

Posted

技术标签:

【中文标题】致命错误:调用未定义函数 mysql_connect()【英文标题】:Fatal error: Call to undefined function mysql_connect() 【发布时间】:2012-05-23 19:58:51 【问题描述】:

我已经设置了 phpmysql 和 Apache。 localhost() 用于 PHP,它运行良好。但是在我下载 MySQL 之后,它会报告:

我该如何解决这个问题?

【问题讨论】:

你安装完包后是否重启了apache? nz.php.net/manual/en/mysql.installation.php 您标记了您的问题 [mysql-error-1064] - 如果您的脚本无法与 MySQL 通信,您如何得到它? 如果 mysqli 或 PDO 有效,那么您最好还是使用它们。 @GordonM 是完全正确的。 mysql_* 函数 are deprecated。有better alternatives支持parameterized queries。 【参考方案1】:

当您在代码行中使用 mysql_connect 时会出现问题,因此只需像在 mysqli_connect 中一样添加它即可解决问题。 然后,您还必须在整个代码行中使用mysqli,否则问题会再次出现。 然后示例 mysql_select_db 将是 mysqli_select_db 用于选择数据库。

【讨论】:

【参考方案2】:

对于 CPanel 用户,如果您看到此错误并且您已经为该站点选择了 PHP 5.x,则可能有一个 CPanel 更新禁用了mysqlmysqli PHP 扩展。

检查和启用扩展:

    转到 CPanel 中的 选择 PHP 版本 确保您选择了 PHP 5.x 确保检查mysqlmysqli PHP 扩展

【讨论】:

【参考方案3】:

您已升级到 PHP 7,现在 mysql_connect 已被弃用。检查你的:

php -version

将其更改为mysqli_connect,如下所示:

$host = "127.0.0.1";
$username = "root";
$pass = "foobar";
$con = mysqli_connect($host, $username, $pass, "your_database");

如果您要升级旧版 PHP,现在您将面临使用 mysqli_* 函数升级所有 mysql_* 函数的任务。

【讨论】:

【参考方案4】:

如果您使用的是Windows10,PHP 7.2并尝试连接到mysql。 如果发生此错误

未捕获的错误:调用未定义的函数 mysqli()

请执行以下步骤以使其正确。

    进入PHP安装文件夹, 检查 php.ini 文件,(只有 dev、prod 文件存在,然后是 php.ini 文件之一) 查找“extension=mysqli”并删除“;”在它之前。 寻找“extension_dir”并提及“ext”目录的路径。 重新启动应用程序。

希望这对某人有所帮助。

【讨论】:

【参考方案5】:

使用。 <?php $con = mysqli_connect('localhost', 'username', 'password', 'database'); ?>

在 PHP 7 中。 您可能在 XAMPP 中有 PHP 7。您现在有两个选择:MySQLi 和 PDO。

【讨论】:

【参考方案6】:

此错误仅针对您的 PHP 版本 v7.0。 您可以使用 PHP v5.0 避免这些 否则

使用它

mysqli_connect("localhost","root","")

我只用mysql制作了mysqli

【讨论】:

【参考方案7】:

一种解决方案可能是在整个应用程序中使用类似这样的适配器函数来开始使用mysqli 而不是mysql

if (!function_exists('mysql_connect')) 
    function mysql_connect($host = '', $user = '', $password = '', $database = '', $port = 0, $socket = '') 
        return mysqli_connect($host, $user, $password, $database, $port, $socket);
    



if (!function_exists('mysql_select_db')) 
    function mysql_select_db($link, $dbname) 
        mysqli_select_db($link, $dbname);
    

【讨论】:

【参考方案8】:

这是一个快速修复:

所有专业人士可能会因为这个答案而讨厌我。但是我在服务器上遇到了同样的错误:致命错误:未捕获的错误:调用使用 PHP 7 的未定义函数 mysql_connect()。没有时间这么快地重写所有 mysql 代码,如果有人需要临时修复,请在 CPANEL 中查找 PHP 配置 并将该帐户的版本更改为 PHP 5.4 而不是 PHP 7。然后代码运行良好,没有出现上述错误。

【讨论】:

【参考方案9】:

打开您的终端并运行以下命令。

sudo apt-get install mysql-server

如果你正在运行 PHP,你还需要为 mysql 5 安装 php 模块:

sudo apt-get install php5-mysql

【讨论】:

【参考方案10】:

此代码可以帮助您

<?php 

$servername = "localhost";
$username = "root";
$password = "";


$con = new mysqli($servername, $username, $password);

?>

但更改“服务器名”、“用户名”和“密码”

【讨论】:

【参考方案11】:

检查是否为您的 PHP 版本安装了 mysqli 模块

$ ls /etc/php/7.0/mods-available/mysql*
/etc/php/7.0/mods-available/mysqli.ini /etc/php/7.0/mods-available/mysqlnd.ini

启用模块

$ sudo phpenmod mysqli

【讨论】:

【参考方案12】:

如果您在升级到 PHP 7.0 后收到此错误,则说明您使用的是已弃用的库。

mysql_connect — 打开与 MySQL 服务器的连接 警告 这 扩展在 PHP 5.5.0 中被弃用,并在 PHP 中被删除 7.0.0。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。

更多:http://php.net/manual/en/function.mysql-connect.php

【讨论】:

这应该被标记为接受的答案 - 仍然使用 mysql_* 调用是不好的做法。【参考方案13】:

我在 RHEL6 上遇到了同样的问题。原来 /etc/php.d 中的 mysql.ini 文件只有一个模块名,但需要一个完整的路径名。在我的 RHEL6 系统上,有效的条目是:

; Enable mysql extension module

extension=/usr/lib64/php/modules/mysql.so

修改文件后,我重启了apache,一切正常。

【讨论】:

【参考方案14】:
PHP.INI

检查您是否忘记启用以下选项(加载 mysql 等模块):

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
extension_dir = "ext"

【讨论】:

【参考方案15】:

我使用的是 windows 8,这个问题通过更改环境变量得到解决

请按以下步骤操作: 打开我的电脑属性->高级系统设置->环境变量。 在“系统变量”下,选择“路径”并单击“编辑” 在“变量值”中,添加“C:\php;”或者 php 的安装路径。

单击确定并应用设置并重新启动系统。 它应该可以工作。

【讨论】:

【参考方案16】:

我的解决方案在这里(我只需要从PHPIniDir 'c:\PHP\' 中删除最后一个斜杠(注意:反斜杠)):Fatal error: Call to undefined function mysql_connect() cannot solve

【讨论】:

【参考方案17】:

验证您的 PHP 安装是否已使用 mysql 支持编译。创建一个包含&lt;?php phpinfo(); exit(); ?&gt; 的测试网页并将其加载到浏览器中。在页面中搜索 MySQL。如果没有看到,则需要重新编译支持 MySQL 的 PHP,或者重新安装一个内置的 PHP 包

【讨论】:

我有类似的问题,我在我的测试页面中没有看到任何 MySQL:jsfiddle.net/ad0gd90y。相反,我只看到“mysqlnd”。我应该在 PHP 之前安装 MySQL 吗?如何使用 MySQL 支持重新编译 PHP? @RohitKumarChoudhary Mysqlnd 是 PHP for mysql 的原生驱动。你的系统安装了mysql吗?

以上是关于致命错误:调用未定义函数 mysql_connect()的主要内容,如果未能解决你的问题,请参考以下文章

致命错误:未捕获的错误:调用 C:\xampp\htdocs\ 中未定义的函数 mysql_connect()

致命错误:在 php 中调用未定义函数 fetch_assoc()

致命错误:调用未定义的函数 site_url()

PHP 致命错误:调用未定义的函数 imagecreatefrompng()

致命错误:调用未定义的函数 imagewebp() [关闭]

PHPmyadmin 问题 - 致命错误:未捕获错误:调用未定义函数 mb_detect_encoding()