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

时间:2016-01-03 16:55:16

标签: php mysql xampp

我正在尝试与XAMPP和MySQL服务器建立一个简单的连接,但每当我尝试输入数据或连接到数据库时,我都会收到此错误。

  

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

第22行的例子:

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

10 个答案:

答案 0 :(得分:102)

PHP 7中删除了

mysql_*个函数。

您可能在XAMPP中使用PHP 7。您现在有两种选择:MySQLiPDO

此外,here是关于PDO的不错的维基页面。

答案 1 :(得分:33)

您可以使用mysqli_connect($mysql_hostname , $mysql_username)代替mysql_connect($mysql_hostname , $mysql_username)

自PHP 7起,

mysql_*函数已被删除。您现在有两种选择:MySQLiPDO

答案 2 :(得分:19)

建议使用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设计。

阅读Choosing an APIWhy shouldn't I use mysql_* functions in PHP?

答案 3 :(得分:7)

PHP 7中删除了

mysql_*个函数。

您现在有两种选择:MySQLiPDO

以下是对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)) {

-while ($row = mysql_fetch_array( $result, MYSQL_ASSOC )) {
+while ($row = mysqli_fetch_array( $result, MYSQLI_ASSOC )) {

-mysql_close($dbLink);
+mysqli_close($dbLink);

答案 4 :(得分:7)

正如其他答案所暗示的那样......有些人(无论出于何种原因)决定在升级PHP时你的旧代码不起作用,因为他比你更了解并且不关心你的代码做什么或者多么简单它是你升级的。

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

  

将您的PHP版本降级为适用的任何版本

...或

  

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

这将保持您的旧PHP代码正常运行,直到您有心情更新...

答案 5 :(得分:2)

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

MySQLi示例:

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

mysqli_connect reference link

答案 6 :(得分:1)

您收到了该错误,因为从PHP 7中删除了mysql_connect函数(实际上,所有mysql_*函数)。您现在可以使用MySQLiPDO

示例:

$mysqli = new mysqli($hostname, $username, $password, $database);

答案 7 :(得分:1)

请确保您没有像我一样输入错字

  

msyql_fetch_assoc应该是 mysql

答案 8 :(得分:0)

如果我在创建 dockerfile 时遇到类似问题,我会遇到同样的情况:- 我在 mysql_connect 函数中使用以下更改为:-

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

答案 9 :(得分:-1)

对于mysqli,您可以使用:

$ db = ADONewConnection('mysqli');

... ...

$ db-> execute(“ set names'utf8'”);

相关问题