php: SQLSTATE Соединение не может быть выполнено, потому что целевая машина активно отказалась от него

Я создал регистрационную форму и регистрационную форму, используя php. И я взял источник из Google.

Таким образом, я добавил весь соответствующий код при запуске index.php.

Это показывает,

SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it. 

Я попытался решить эту проблему, используя stackoverflow и google, но не могу исправить.

Я использую xampp. На панели управления xampp запущены модули apache и mysql. а порт apache – 80 443, а порт mysql – 3306 .

Могу я узнать, какая-нибудь другая моя ошибка? ..

Кто-нибудь может мне помочь? Любая помощь будет оценена по достоинству.

Заранее спасибо.

Это мой config.php:

 <?php ob_start(); session_start(); //set timezone date_default_timezone_set('Europe/London'); //database credentials define('DBHOST','localhost'); define('DBUSER','root'); define('DBPASS',''); define('DBNAME','register'); //application address define('DIR','http://domain.com/'); define('SITEEMAIL','noreply@domain.com'); try { //create PDO connection $db = new PDO("mysql:host=".DBHOST.";port=8889;dbname=".DBNAME, DBUSER, DBPASS); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { //show error echo '<p class="bg-danger">'.$e->getMessage().'</p>'; exit; } //include the user class, pass in the database connection include('classes/user.php'); $user = new User($db); ?> в <?php ob_start(); session_start(); //set timezone date_default_timezone_set('Europe/London'); //database credentials define('DBHOST','localhost'); define('DBUSER','root'); define('DBPASS',''); define('DBNAME','register'); //application address define('DIR','http://domain.com/'); define('SITEEMAIL','noreply@domain.com'); try { //create PDO connection $db = new PDO("mysql:host=".DBHOST.";port=8889;dbname=".DBNAME, DBUSER, DBPASS); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { //show error echo '<p class="bg-danger">'.$e->getMessage().'</p>'; exit; } //include the user class, pass in the database connection include('classes/user.php'); $user = new User($db); ?> 

разве вы не сказали, что ваш порт mysql 3306:

 $db = new PDO("mysql:host=".DBHOST.";port=8889 //------------------------------------------^ 

это может помочь:

 $db = new PDO("mysql:host=".DBHOST.";port=3306 

$ db = новый PDO ("mysql: host =". DBHOST. "; port = 3306 ; dbname =". DBNAME, DBUSER, DBPASS);

вы должны изменить номер порта на значение по умолчанию: 3306! надеюсь это поможет

Sasi, если вы используете это на локальном сервере, это может быть ваша настройка для Windows, на которую должен быть настроен локальный сервер для отправки электронной почты.

Здесь вы можете найти, как настроить XAMPP для отправки почты с localhost.

Извините, что я отвечаю вам здесь, но у меня недостаточно репутации, чтобы комментировать: D

Эта ошибка обычно возникает, когда некоторые другие приложения, такие как skype и IIS, используют порты Apache, т.е. 80 и mysql-сервер, т.е. 3306

Вы можете удалить эти приложения или изменить номера портов локального хоста на что-то еще и внести правильные изменения в settings.php

Я тоже понес эту ошибку. Я сделал следующее: 1. узнайте номер порта, который используется mysql. В phpmyadmin я запустил следующий sql:

 show variables; 

он отображает список переменных mysql. прокрутите вниз, вы увидите номер порта.

  1. Я отредактировал PHP-код следующим образом:

$ dsn = 'mysql: host = 127.0.0.1; port = 3307; имя_бд = learnphpfast ';

Оно работало завораживающе!

Для пользователей Drupal –

Обычно это происходит из-за max_execution времени для связи сервера с mysql. Увеличьте максимальное время выполнения с 60 секунд до верхнего предела и попробуйте обновить страницу еще раз.

Это сработало для меня.