Apabila cuba mewujudkan sambungan PHP ke pangkalan data MySQL yang dihoskan pada phpMyAdmin, pengguna mungkin menghadapi ralat yang mengecewakan "Sambungan gagal: SQLSTATE[HY000] [2002] Sambungan ditolak." Ralat ini menunjukkan bahawa skrip PHP tidak boleh menyambung ke pelayan pangkalan data.
Sebagai contoh, pertimbangkan kod PHP berikut:
$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(); }
Kod ini cuba menyambung ke pangkalan data MySQL menggunakan PDO (Objek Data PHP) objek. Walau bagaimanapun, apabila menggunakan sambungan melalui Posman, ralat "Sambungan gagal: SQLSTATE[HY000] [2002] Sambungan ditolak" berlaku.
Pada mulanya, seseorang mungkin menghadapi ralat "Sambungan gagal: SQLSTATE[HY000] [2002 ] Tiada fail atau direktori sedemikian." Ini berlaku apabila nama pelayan ditetapkan kepada "localhost." Menukar nama pelayan kepada alamat IP menangani isu ini tetapi mengakibatkan ralat "Sambungan ditolak".
Penyelesaian kepada penolakan sambungan ini terletak pada nombor port yang digunakan. Port lalai untuk MySQL ialah 3306. Walau bagaimanapun, untuk sambungan melalui MAMP, port hendaklah ditetapkan kepada 8889.
Melaraskan kod seperti berikut akan menyelesaikan isu sambungan:
$conn = new PDO("mysql:host=$servername;port=8889;dbname=AppDatabase", $username, $password);
Dengan pengubahsuaian ini, skrip PHP akan berjaya menyambung ke pangkalan data MySQL menggunakan port 8889.
Atas ialah kandungan terperinci Bagaimana untuk Betulkan 'Sambungan gagal: SQLSTATE[HY000] [2002] Sambungan ditolak' dalam Sambungan PHP MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!