簡體   English   中英

致命錯誤:調用未定義的函數 mysql_connect()

[英]Fatal error: Call to undefined function mysql_connect()

我已經設置了 PHP、MySQL 和 Apache。 localhost()用於 PHP 並且運行良好。 但是在我下載 MySQL 后,它報告:

致命錯誤:調用未定義的函數 mysql_connect()

我怎樣才能解決這個問題?

您升級到 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,現在你面臨着升級所有的任務mysql_*功能與mysqli_*功能。

如果您在升級到 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

打開終端並運行以下命令。

sudo apt-get install mysql-server

如果您正在運行 PHP,您還需要為 mysql 5 安裝 php 模塊:

sudo apt-get install php5-mysql

驗證您的 PHP 安裝是否已編譯支持 mysql。 創建一個包含<?php phpinfo(); exit(); ?>的測試網頁<?php phpinfo(); exit(); ?> <?php phpinfo(); exit(); ?> <?php phpinfo(); exit(); ?>並將其加載到瀏覽器中。 在頁面中搜索 MySQL。 如果你沒有看到它,你需要重新編譯支持 MySQL 的 PHP,或者重新安裝一個內置了它的 PHP 包

PHP.INI

檢查您是否忘記啟用以下選項(加載 mysql 等模塊):

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

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

在 PHP 7 中。您可能在 XAMPP 中有 PHP 7。 您現在有兩個選擇:MySQLi 和 PDO。

此錯誤僅適用於您的 PHP 版本 v7.0。 您可以使用 PHP v5.0 else 避免這些

用它

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

我只從 mysql 制作了 mysqli

對於CPanel用戶,如果您看到此錯誤並且您已經為站點選擇了 PHP 5.x,則可能有一個CPanel更新禁用了mysqlmysqli PHP 擴展。

要檢查和啟用擴展:

  1. 轉到在CPanel 中選擇 PHP 版本
  2. 確保您選擇了 PHP 5.x
  3. 確保mysqlmysqli PHP 擴展被選中

我在 RHEL6 上遇到了同樣的問題。 原來 /etc/php.d 中的 mysql.ini 文件只有一個模塊名,但需要一個完整的路徑名。 在我的 RHEL6 系統上,有效的條目是:

; Enable mysql extension module

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

修改文件后,我重新啟動了apache,一切正常。

一個解決方案可能是使用這些適配器函數來開始在整個應用程序中使用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);
    }
}

我正在使用 Windows 8 n 這個問題通過更改環境變量得到解決

按照以下步驟操作:打開我的電腦屬性->高級系統設置->環境變量。 在“系統變量”下,選擇“路徑”並點擊“編輯”在“變量值”中,添加“C:\\php;” 或者安裝php的路徑。

單擊“確定”並應用設置並重新啟動系統。 它應該工作。

這是一個快速修復:

所有的專業人士可能會因為這個答案而討厭我。 但是我在服務器上遇到了同樣的錯誤:致命錯誤:未捕獲的錯誤:調用使用 PHP 7 的未定義函數 mysql_connect() 。沒有時間重寫所有 mysql 代碼,所以如果有人需要,可以快速臨時修復它在 CPANEL 中查找PHP 配置並將該帳戶的版本更改為 PHP 5.4 而不是 PHP 7。然后代碼運行良好,沒有上述錯誤。

如果您使用的是 Windows10、PHP 7.2 並嘗試連接到 mysql。 如果發生此錯誤

未捕獲的錯誤:調用未定義的函數 mysqli()

執行以下步驟以使其正確。

  1. 轉到PHP安裝文件夾,
  2. 檢查 php.ini 文件,(只有 dev、prod 文件存在,然后文件之一為 php.ini 文件)
  3. 查找“extension=mysqli”並刪除“;” 在它之前。
  4. 查找“extension_dir”並提到“ext”目錄的路徑。
  5. 重新啟動應用程序。

希望這對某人有幫助。

我的解決方案在這里(我只需要從PHPIniDir 'c:\\PHP\\'刪除最后一個斜杠(注意:反斜杠): 致命錯誤:調用未定義的函數 mysql_connect() 無法解決

檢查是否為您的 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

此代碼可以幫助您

<?php 

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


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

?>

但更改“服務器名”、“用戶名”和“密碼”

當您在代碼行中使用mysql_connect時會出現問題,因此只需將其添加為mysqli_connect解決問題。
然后,您還必須在整個代碼行中使用mysqli ,否則問題會再次浮出水面。
示例mysql_select_db將是用於選擇數據庫的mysqli_select_db

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM