【问题标题】:Connection to database using XAMPP使用 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

标签: php mysqli xampp


【解决方案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第五 参数中。它没有混入第一个。

    也就是说:

    1. 由于localhose:8080/test.php 显示了一个网页,很明显您在端口 8080 上运行 HTTP 服务器,而不是您的数据库服务器。
    2. 出于性能原因,您应该更喜欢使用与 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
    猜你喜欢
    • 2017-10-15
    • 1970-01-01
    • 2013-05-14
    • 2012-05-05
    • 1970-01-01
    • 2020-04-21
    • 2020-12-20
    • 2014-02-05
    • 2011-12-02
    相关资源
    最近更新 更多