我试图与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);