![](/img/trans.png)
[英]Fatal error: Uncaught Error: Call to undefined function mysql_connect()
[英]Fatal error: Uncaught Error: Call to undefined function mysql_connect()
我正在嘗試與 XAMPP 和 MySQL 服務器進行簡單連接,但每當我嘗試輸入數據或連接到數據庫時,都會出現此錯誤。
致命錯誤:未捕獲錯誤:調用未定義的 function mysql_connect() in C:\xampp\htdocs\register.php:22
堆棧跟蹤:#0 {main} 在第 22 行的 C:\xampp\htdocs\register.php 中拋出
第 22 行示例:
$link = mysql_connect($mysql_hostname , $mysql_username);
建議使用 MySQLi 或 PDO 擴展。 不建議在新開發中使用舊的 mysql 擴展,因為它在 PHP 5.5.0 中已被棄用,並在 PHP 7 中被刪除。
PHP 提供了三種不同的 API 來連接 MySQL。 下面我們展示 mysql、mysqli 和 PDO 擴展提供的 API。 每個代碼片段使用用戶名“username”和密碼“password”創建與“example.com”上運行的 MySQL 服務器的連接。 並運行一個查詢來問候用戶。
Example #1 比較三個 MySQL API
<?php
// mysqli
$mysqli = new mysqli("example.com", "username", "password", "database");
$result = $mysqli->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $result->fetch_assoc();
echo htmlentities($row['_message']);
// PDO
$pdo = new PDO('mysql:host=example.com;dbname=database', 'username', 'password');
$statement = $pdo->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);
// mysql
$c = mysql_connect("example.com", "username", "password");
mysql_select_db("database");
$result = mysql_query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = mysql_fetch_assoc($result);
echo htmlentities($row['_message']);
?>
我建議您同時嘗試 MySQLi 和 PDO 並找出您喜歡的 API 設計。
正如其他答案所暗示的那樣......有些人(無論出於何種原因)認為您的舊代碼在您升級 PHP 時不應該工作,因為他比您更了解並且不關心您的代碼做什么或它有多簡單你來升級。
好吧,如果你不能在一夜之間升級你的項目,你可以
將您的 PHP 版本降級到任何可用的版本
或者...
使用 shim(一種 polyfill),例如https://github.com/dshafik/php7-mysql-shim或https://github.com/dotpointer/mysql-shim ,然后為
include_once("choice_shim.php");
在您的代碼中的某處
這將使您的舊 PHP 代碼保持正常運行,直到您有心情更新...
mysql_*
函數已在 PHP 7 中刪除。
以下是遷移到 MySQLi 替代方案之前 (-) 和之后 (+) 的比較,直接取自工作代碼:
-if (!$dbLink = mysql_connect($dbHost, $dbUser, $dbPass))
+if (!$dbLink = mysqli_connect($dbHost, $dbUser, $dbPass))
-if (!mysql_select_db($dbName, $dbLink))
+if (!mysqli_select_db($dbLink, $dbName))
-if (!$result = mysql_query($query, $dbLink)) {
+if (!$result = mysqli_query($dbLink, $query)) {
-if (mysql_num_rows($result) > 0) {
+if (mysqli_num_rows($result) > 0) {
-while ($row = mysql_fetch_array( $result, MYSQL_ASSOC )) {
+while ($row = mysqli_fetch_array( $result, MYSQLI_ASSOC )) {
-mysql_close($dbLink);
+mysqli_close($dbLink);
確保您沒有像我一樣犯錯
msyql_fetch_assoc 應該是mysql
致命錯誤背后的原因,例如:
主要是升級到PHP高版本(>=7)造成的。
在這種情況下,最好修改您的代碼並使用 PDO 或 Mysql 改進版本和最新的 PHP 版本,這樣您可以獲得一些好處,例如
您可以訪問此處<\/a>以檢查 PDO\/Mysqli 連接和查詢示例。
"對於 mysqli,您可以使用:
$db = ADONewConnection('mysqli');
……
$db->execute("設置名稱 'utf8'");
如果在創建 dockerfile 時遇到類似問題,我會遇到相同的情況:- 我在 mysql_connect 函數中使用以下更改為:-
if($CONN = @mysqli_connect($DBHOST, $DBUSER, $DBPASS)){ //mysql_query("SET CHARACTER SET 'gbk'", $CONN);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.