[英]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.