Я впервые использую 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, открывается пустая страница, но ничего не появляется.
Я пробовал это. Это потому, что я не могу поместить аргумент в 'mysqli_connect_error()'. Однако теперь он показывает мне <br>Ошибка подключения: Отказ в подключении<br> Знаете ли вы, почему это происходит?
localhost:8080 — ваш веб-сервер, порт MySQL обычно 3306






Аргумент имени сервера для mysqli_connect должен быть просто именем сервера.
Если вы хотите указать номер порта, то он указывается в пятом аргументе mysqli_connect. Он не смешивается с первым.
Это сказало:
localhose:8080/test.php показывает веб-страницу, ясно, что вы используете свой HTTP-сервер на порту 8080, а не сервер базы данных.Похоже, что localhost сделает это автоматически. php.net/manual/en/mysqli.quickstart.connections.php
@JasonK — Да, но порты — это домен TCP/IP, а не локальные сокеты.
Я только что проверил это с кодом из руководства. Использование порта с localhost. Он по-прежнему требует Localhost через сокет UNIX.
@JasonK Это новое для меня. На какой системе вы это пытаетесь?
ub 20.04 LTS php 7.4.3
@JasonK Я не могу это воспроизвести. Я даже проверил исходный код. Сокет используется, только если аргумент имени хоста равен localhost. Если вы укажете номер порта, то будет использоваться соединение TCP/IP.
Порт 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
Используйте это, чтобы включить отображение ошибок. ini_set('display_errors', 1); ini_set('display_startup_errors', 1); отчет об ошибках (E_ALL); И проверьте журнал ошибок вашего веб-сервера.