Проблемът там е, че не предавате порта като пети параметър към mysqli връзката. Ако използвате localhost
като ваш хост, тогава параметърът на порта се игнорира. Ето защо в фрагмента MAMP те не предават $db_port
като параметър, той просто не е необходим. Причината да се случи това е, че localhost
не използва TCP/IP, вместо това използва unix сокети.
След като сте последвали чуждото предложение, вероятно сте променили кода до точката, в която сте го направили
$db_host = '127.0.0.1';
Това е добре, но тъй като вече не използвате unix сокети (localhost
), параметърът на порта е необходим, за да се установи връзка. Mysqli използва 3306
порт по подразбиране, ако не посочите друг като пети параметър. Това е портът, към който се опитвате да се свържете, като използвате този код. Това е мястото, където Error: Connection refused
идва от.
За да разрешите проблема, просто трябва да предадете порта като пети параметър по следния начин:
$mysqli = new mysqli($db_host,$db_user,$db_password,$db_db,$db_port);
Самият фрагмент е страхотен, просто не отговаряше напълно на вашите нужди и трябваше да го промените малко. Ако искате да използвате фрагменти, трябва да разберете какво правят и в този случай как работи mysqli. Не забравяйте да запомните това за в бъдеще, тъй като със сигурност ще избегнете неприятни ситуации и грешки като тази.