Ситуация такова, я пытаюсь использовать соединение PHP для подключения моей базы данных MySQL, которая находится на phpmyadmin. Ничего не связано с соединением, просто пытающимся выяснить, успешно ли установлено соединение. Я использую MAMP для размещения базы данных, соединение, которое я пытаюсь использовать, следующее:
<?php $servername = "127.0.0.1"; $username = "root"; $password = "root"; try { $conn = new PDO("mysql:host=$servername;dbname=AppDatabase", $username, $password); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully"; } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); } ?>
Я использую postman для проверки, работает ли соединение, но я продолжаю получать это сообщение об ошибке:
Ошибка подключения: SQLSTATE [HY000] [2002] Соединение отказано
Прежде чем я получил сообщение об ошибке:
Ошибка соединения: SQLSTATE [HY000] [2002] Нет такого файла или каталога
Это было связано с тем, что я установил имя сервера на localhost, изменив его на IP-адрес, на который он отказал мне, и я не знаю, что не так.
Любая помощь в этом отношении была бы оценена, спасибо.
Я нашел причину, по которой соединение не работало, потому что соединение пыталось подключиться к порту 8888, когда ему нужно было подключиться к порту 8889.
$conn = new PDO("mysql:host=$servername;port=8889;dbname=AppDatabase", $username, $password);
Это устранило проблему, хотя изменение имени сервера на localhost по-прежнему дает ошибку.
Ошибка соединения: SQLSTATE [HY000] [2002] Нет такого файла или каталога
Но он успешно соединяется, когда IP-адрес вводится для имени сервера.
вы должны использовать
'mysql:host='.$servername.';dbname=AppDatabase'
вместо
"mysql:host=$servername;dbname=AppDatabase"
Мой самый первый ответ в stackoverflow, я считаю, что существует проблема из-за двойных кавычек в переменных и внутри PDO.