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


Fatal error: Uncaught Error: Call to undefined function mysql_connect()

我试图与XAMPP和MySQL服务器进行简单的连接,但每当我试图输入数据或连接到数据库时,我都会收到这个错误。

致命错误:未捕获错误:调用C:''examplep''htdocs''register.php中未定义的函数mysql_connect():22
堆栈跟踪:在第22行的C:''examplep''htdocs''register.php中抛出#0{main}

第22行示例:

$link = mysql_connect($mysql_hostname , $mysql_username);

mysql_*函数已在PHP7中删除。

XAMPP中可能有PHP7。您现在有两个备选方案:MySQLi和PDO。

您可以使用mysqli_connect($mysql_hostname , $mysql_username)而不是mysql_connect($mysql_hostname , $mysql_username)

mysql_*函数从PHP 7开始被删除。您现在有两个备选方案:MySQLi和PDO。

建议使用MySQLi或PDO扩展不建议在新的开发中使用旧的mysql扩展,因为它在PHP 5.5.0中被弃用,在PHP 7中被删除。

PHP提供了三种不同的API来连接MySQL。下面我们展示了mysql、mysqli和PDO扩展提供的API。每个代码片段都使用用户名"username"和密码"password"创建到运行在"example.com"上的MySQL服务器的连接。并运行一个查询来迎接用户。

示例#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设计。

阅读选择API和为什么我不应该在PHP中使用mysql_*函数?

如其他答案所示。。。有些人(无论出于什么原因)决定,当你升级PHP时,你的旧代码不应该工作,因为他比你更了解,不在乎你的代码做什么,也不在乎你升级有多简单。

好吧,如果你不能在一夜之间升级你的项目,你可以

将你的PHP版本降级到工作的任何版本

或者。。。

使用垫片(一种polyfill),例如https://github.com/dshafik/php7-mysql-shim或https://github.com/dotpointer/mysql-shim,然后在代码中的某个位置找到include_once("choice_shim.php");

这将使你的旧PHP代码保持运行,直到你有心情更新。。。

mysql_*函数已在PHP7中删除。

您现在有两个备选方案:MySQLi和PDO。

以下是迁移到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);

mysql_函数已从PHP 7中删除。您现在可以使用MySQLi或PDO。

MySQLi示例:

mysqli_connect($mysql_hostname, $mysql_username, $mysql_password, $mysql_dbname);

mysqli_connect参考链路

确保您没有像我的那样输入错误

msyql_fetch_assoc应为mysql

对于mysqli,您可以使用:

$db=ADONewConnection('mysqli');

$db->execute("集合名称'utf8'");

如果在创建dockerfile时遇到类似问题,我将面临相同的情况:-我在mysql_connect函数中使用了以下更改:-

if($CONN=@mysqli_connect($DBHOST、$DBUSER、$DB PASS)){//mysql_query("SET CHARACTER SET'gbk'",$CONN);