使用 XAMPP 连接到数据库

Posted

技术标签:

【中文标题】使用 XAMPP 连接到数据库【英文标题】:Connection to database using XAMPP 【发布时间】:2021-03-21 06:27:17 【问题描述】:

这是我第一次使用 php。我在 Mac 上使用 XAMPP。

mysql、Apache 和 localhost:8080 现在都在工作。 我创建了这个名为 test.php 的文件并将其保存在 lampp/htdocs 中:

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Connection</title>
</head>
<body>

<?php
  $servername = "localhost:8080";
  $username = "root";
  $password = "root";

  // Create connection
  $conn = mysqli_connect($servername, $username, $password);

  // Check connection
  if (!$conn)
  
    die("Connection failed: " . mysqli_connect_error($conn));
  
  else
  
    echo "Connected successfully";
  
?>



</body>
</html>

但是,当我转到 localhose:8080/test.php 时,会打开一个空白页面,但没有显示任何内容

【问题讨论】:

使用这个来开启错误显示。 ini_set('display_errors', 1); ini_set('display_startup_errors', 1);错误报告(E_ALL);并检查您的网络服务器错误日志。 我试过了。这是因为我不能在 'mysqli_connect_error()' 中添加参数但是,现在它显示我 连接失败:连接被拒绝你知道为什么会发生这种情况 localhost:8080 是您的网络服务器,MySQL 端口通常是 3306 【参考方案1】:

端口 8080 用于您的 Web 服务器。您的 MySQL 服务器默认侦听端口 3306。如果端口不同,您可以检查 XAMPP 设置,但应该是 3306。这意味着您可以省略端口号。

使用 mysqli 连接数据库只需要 3 行代码:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'user', 'pass', 'db_name', 3306); // you can omit the last argument
$mysqli->set_charset('utf8mb4'); // always set the charset

【讨论】:

【参考方案2】:

mysqli_connect 的服务器名参数只是服务器名。

如果你想提供一个端口号,那么在mysqli_connect第五 参数中。它没有混入第一个。

也就是说:

    由于localhose:8080/test.php 显示了一个网页,很明显您在端口 8080 上运行 HTTP 服务器,而不是您的数据库服务器。 出于性能原因,您应该更喜欢使用与 MySQL/MariaDB 的套接字连接,而不是 TCP/IP 端口

【讨论】:

看起来 localhost 会自动执行此操作。 php.net/manual/en/mysqli.quickstart.connections.php @JasonK — 是的,但端口是 TCP/IP 的域,而不是本地套接字。 我刚刚使用手册中的代码对其进行了测试。将端口与 locaclhost 一起使用。它仍然通过 UNIX 套接字声明 Localhost。 @JasonK 这对我来说是新的。你在什么系统上试试这个? ub 20.04 LTS php 7.4.3

以上是关于使用 XAMPP 连接到数据库的主要内容,如果未能解决你的问题,请参考以下文章

从 Internet 连接到 xampp 数据库

使用 Perl CGI 和 XAMPP 连接到 MySQL 数据库

通过 C# 连接到在 XAMPP 中创建的数据库

在 Windows 10 上使用 XAMPP 连接到 MySQL 数据库的访问被拒绝

使用xampp连接到mysql [重复]

无法使用便携式 Xampp 通过 Django 连接到 MySQL