Php 致命错误:未捕获错误:调用未定义的函数mysql_connect()
我正在尝试与XAMPP和MySQL服务器进行简单连接,但每当我尝试输入数据或连接到数据库时,都会出现此错误 致命错误:未捕获错误:在C:\xampp\htdocs\register.php:22中调用未定义的函数mysql\u connect() 堆栈跟踪:#0{main}在第22行的C:\xampp\htdocs\register.php中抛出 第22行的示例:Php 致命错误:未捕获错误:调用未定义的函数mysql_connect(),php,mysql,xampp,Php,Mysql,Xampp,我正在尝试与XAMPP和MySQL服务器进行简单连接,但每当我尝试输入数据或连接到数据库时,都会出现此错误 致命错误:未捕获错误:在C:\xampp\htdocs\register.php:22中调用未定义的函数mysql\u connect() 堆栈跟踪:#0{main}在第22行的C:\xampp\htdocs\register.php中抛出 第22行的示例: $link = mysql_connect($mysql_hostname , $mysql_username); mysql.*
$link = mysql_connect($mysql_hostname , $mysql_username);
mysql.*
函数已在PHP7中删除
您可能在XAMPP中有PHP7。你现在有两个选择:和
另外,这是一个关于PDO的不错的wiki页面。您可以使用
mysqli\u connect($mysql\u hostname,$mysql\u username)
而不是mysql\u connect($mysql\u hostname,$mysql\u username)
mysql.*
函数从PHP7开始被删除。您现在有两种选择:和。mysql\uz
函数已从PHP7中删除。您现在可以使用或
MySQLi示例:
mysqli_connect($mysql_hostname, $mysql_username, $mysql_password, $mysql_dbname);
建议使用MySQLi或PDO扩展不建议在新开发中使用旧的mysql扩展,因为它在PHP5.5.0中被弃用,在PHP7中被删除。 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设计
PHP7中的Read和
mysql*
函数已被删除
你现在有两个选择:和
以下是直接从工作代码中获取的迁移到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);
正如其他答案所表明的那样。。。有些人(无论出于何种原因)认为,当您升级PHP时,旧代码不应该工作,因为他比您更清楚,不关心您的代码做什么,也不关心您的升级有多简单 如果你不能在一夜之间升级你的项目,你可以 将您的PHP版本降级到任何有效的版本 或者 使用填隙片(一种polyfill),比如or,然后为
include_once(“choice_shim.php”)找到一个位置代码>代码中的某个地方
这将使您的旧PHP代码保持正常运行,直到您有心情更新…请确保您没有像我这样输入错误
msyql_fetch_assoc应该是mysql
对于mysqli,您可以使用:
$db=adonnewconnection('mysqli')
。。。
$db->execute(“设置名称‘utf8’”) 如果在创建dockerfile时遇到类似问题,我会遇到相同的情况:-
我在mysql_connect函数中使用了以下更改:-
if($CONN=@mysqli_connect($DBHOST、$DBUSER、$DBPASS)){
//mysql\u query(“设置字符集'gbk',$CONN);。它们不再被维护。请参阅?改为了解,并使用或。将mysql\u connect($mysql\u主机名,$mysql\u用户名)更改为mysql\u connect($mysql\u主机名,$mysql\u用户名,$mysql\u密码)。此外,如果我在phpmyadim上不使用密码,请切换到PDO或MySQLi?(尝试执行所有这些远程操作只是因为我需要手机才能连接到数据库)如果您在legacy CodeIgniter中遇到此错误,请在config/database.php
:'dbdriver'=>'mysqli',
(将mysql
更改为mysqli
。不过,可能还需要对代码进行其他更改。在Ubuntu16.04上,这需要php7.0-mysql
包。正如@ceejayoz所说,实际上需要对几个API进行更改,不仅是对函数名,而且对它们的参数顺序进行更改。非常令人沮丧。虽然很粗糙,但却很简单。)至少在我使用PDO连接优化我的代码之前,这对我是有效的