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

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

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

我该如何解决这个问题?

【问题讨论】:

标签: php mysql


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    检查和启用扩展:

    1. 转到 CPanel 中的 选择 PHP 版本
    2. 确保您选择了 PHP 5.x
    3. 确保检查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()

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

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

        希望这对某人有所帮助。

        【讨论】:

          【解决方案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吗?
                                猜你喜欢
                                • 1970-01-01
                                • 2016-11-21
                                • 2011-10-04
                                • 2016-08-07
                                • 2016-04-07
                                相关资源
                                最近更新 更多