Подключение к базе данных с помощью XAMPP

Я впервые использую PHP. Я использую XAMPP на Mac.

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); И проверьте журнал ошибок вашего веб-сервера.

Jason K 09.12.2020 21:26

Я пробовал это. Это потому, что я не могу поместить аргумент в 'mysqli_connect_error()'. Однако теперь он показывает мне <br>Ошибка подключения: Отказ в подключении<br> Знаете ли вы, почему это происходит?

user14545805 09.12.2020 21:32
localhost:8080 — ваш веб-сервер, порт MySQL обычно 3306
brombeer 09.12.2020 21:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
757
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Аргумент имени сервера для mysqli_connect должен быть просто именем сервера.

Если вы хотите указать номер порта, то он указывается в пятом аргументе mysqli_connect. Он не смешивается с первым.

Это сказало:

  1. поскольку localhose:8080/test.php показывает веб-страницу, ясно, что вы используете свой HTTP-сервер на порту 8080, а не сервер базы данных.
  2. по соображениям производительности вы должны предпочесть использовать соединение сокета с MySQL/MariaDB, а не порт TCP/IP

Похоже, что localhost сделает это автоматически. php.net/manual/en/mysqli.quickstart.connections.php

Jason K 09.12.2020 21:39

@JasonK — Да, но порты — это домен TCP/IP, а не локальные сокеты.

Quentin 09.12.2020 21:41

Я только что проверил это с кодом из руководства. Использование порта с localhost. Он по-прежнему требует Localhost через сокет UNIX.

Jason K 09.12.2020 21:47

@JasonK Это новое для меня. На какой системе вы это пытаетесь?

Dharman 09.12.2020 22:50

ub 20.04 LTS php 7.4.3

Jason K 09.12.2020 22:53

@JasonK Я не могу это воспроизвести. Я даже проверил исходный код. Сокет используется, только если аргумент имени хоста равен localhost. Если вы укажете номер порта, то будет использоваться соединение TCP/IP.

Dharman 09.12.2020 23:07
Ответ принят как подходящий

Порт 8080 предназначен для вашего веб-сервера. Ваш сервер 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

Другие вопросы по теме