• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z połączeniem z bazą

0 głosów
710 wizyt
pytanie zadane 14 lutego 2025 w SQL, bazy danych przez oleksik Użytkownik (630 p.)

Dzien dobry, mam problem z moim kodem który teorytycznie nie powinien miec błędów lecz w praktyce nie mogę skomunikowac się cały czas z baza poprzez formularz php. Wszystkie pliki mam w jednym folderze na hostingu home.pl

ponizej podsylam kod html, php oraz sql moze ktos cos by doradzial.


html:
 

<form action="form-handler.php" method="POST">
                <label for="name" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Imię</label>
                <input type="text" id="name" name="name" class="block w-full p-2.5 text-sm text-gray-900 bg-gray-50 border border-gray-300 rounded-lg focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" placeholder="Twoje imię" required>
                
                <label for="email" class="block mt-4 mb-2 text-sm font-medium text-gray-900 dark:text-white">Adres e-mail</label>
                <input type="email" id="email" name="email" class="block w-full p-2.5 text-sm text-gray-900 bg-gray-50 border border-gray-300 rounded-lg focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" placeholder="Twój adres e-mail" required>
                
                <label for="date" class="block mt-4 mb-2 text-sm font-medium text-gray-900 dark:text-white">Data</label>
                <input type="date" id="date" name="date" class="block w-full p-2.5 text-sm text-gray-900 bg-gray-50 border border-gray-300 rounded-lg focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" required>
                
                <label for="godzina" class="block mt-4 mb-2 text-sm font-medium text-gray-900 dark:text-white">Godzina</label>
                <input type="time" id="godzina" name="godzina" class="block w-full p-2.5 text-sm text-gray-900 bg-gray-50 border border-gray-300 rounded-lg focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" required>
                
                <button type="submit" formaction="form-handler.php" class="mt-4 w-full text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-4 py-2 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800">Wyślij</button>
            </form>


php podobno w lini 14 taki błąd (
Warning: PHP Startup: php_network_getaddresses: getaddrinfo for serwer2554467.home.pl/ failed: Name or service not known in /form-handler.php on line 14

Fatal error: Uncaught mysqli_sql_exception: php_network_getaddresses: getaddrinfo for serwer2554467.home.pl/ failed: Name or service not known in /form-handler.php:14 Stack trace: #0 /form-handler.php(14): mysqli->__construct() #1 {main} thrown in /form-handler.php on line 14):

kod php:

 

<?php
// Połączenie z bazą danych
$servername = "serwer2554467.home.pl/"; // Adres serwera
$username = "serwer2554467";        // Nazwa użytkownika
$password = "Ciekawy13_!#";            // Hasło
$dbname = "39286266_klienci";           // Nazwa bazy danych

// Włącz wyświetlanie błędów
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// Tworzenie połączenia
$conn = new mysqli($servername, $username, $password, $dbname);

// Sprawdź połączenie
if ($conn->connect_error) {
    die("Połączenie nie powiodło się: " . $conn->connect_error);
}
echo "Połączenie udane!";



// Sprawdzenie połączenia
if ($conn->connect_error) {
    die("Połączenie nieudane: " . $conn->connect_error);
} else {
    echo "Połączenie działa!<br>"; // Jeśli połączenie działa
}

// Pobranie danych z formularza
if (isset($_POST['name'], $_POST['email'], $_POST['date'], $_POST['godzina'])) {
    $name = $_POST['name'];
    $email = $_POST['email'];
    $date = $_POST['date'];
    $godzina = $_POST['godzina'];

    // Przygotowanie zapytania SQL (zabezpieczone)
    $stmt = $conn->prepare("INSERT INTO formularz (name, email, date, godzina) VALUES (?, ?, ?, ?)");
    $stmt->bind_param("ssss", $name, $email, $date, $godzina);

    // Wykonanie zapytania
    if ($stmt->execute()) {
        echo "Dane zostały zapisane!<br>";
    } else {
        echo "Błąd: " . $stmt->error . "<br>";
    }

    // Zamknięcie zapytania
    $stmt->close();
} else {
    echo "Brak danych w formularzu!<br>";
}

// Zamknięcie połączenia z bazą danych
$conn->close();
?>

database.sql:

 

CREATE DATABASE kontakt_form;

USE kontakt_form;

CREATE TABLE formularz (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL,
    date DATE NOT NULL,
    godzina TIME NOT NULL
);

 

 

ponizej jeszcze zalączam screena z bazy z phpmyadmin

 

 

Będe bardzo ale to bardzo wdzięczny za pomoc. Życzę wszystkim miłego wieczoru albo miłego dnia jesli zcytasz to drogi urzytkowniku w dzien.

1 odpowiedź

0 głosów
odpowiedź 14 lutego 2025 przez Arkadiusz Waluk Ekspert (291,530 p.)

Komunikat błędu dość jasno wskazuje, że nie może się dostać do podanego adresu bazy danych, który masz podany w 3 linii pliku PHP w formacie: serwerXXXX.home.pl/ Na końcu nazwy hosta masz / (ukośnik) i podejrzewam, że to może być cały problem. Usuń go zostawiając adres bez ukośnika i wtedy spróbuj.

PS mam nadzieję, że te dane dostępowe do bazy nie są prawdziwe albo chociaż, że już je zmieniłeś, a w bazie nie ma realnych danych. Wrzucanie publicznie na forum hasła do bazy raczej nie jest rozsądne, nawet jeśli być może jest tam zabezpieczenie, aby nie dało się połączyć z zewnątrz.

komentarz 14 lutego 2025 przez oleksik Użytkownik (630 p.)

Jeden błąd rozwiązany (dziekuję bardzo) natomiast jest jeszcze błąd o takiej tresci:

Fatal error: Uncaught mysqli_sql_exception: Access denied for user '39286266_klienci'@'46.242.242.234' (using password: YES) in /form-handler.php:14 Stack trace: #0 /form-handler.php(14): mysqli->__construct() #1 {main} thrown in /form-handler.php on line 14

komentarz 15 lutego 2025 przez Arkadiusz Waluk Ekspert (291,530 p.)
To wskazuje na błąd z dostępem. Sprawdź czy użytkownik oraz hasło do bazy są poprawne. Zauważ, że komunikat błędu mówi "Access denied for user '39286266_klienci'@". Z pokazanego powyżej kodu wynika raczej, że 39286266_klienci to powinna być nazwa bazy danych, a z komunikatu błędu, że próbuje tego użyć jako nazwy użytkownika. Może zamieniłeś parametry? Do new mysqli() powinno być przekazywane kolejno: host, nazwa użytkownika, hasło, nazwa bazy. W innej kolejności nie zadziała.
komentarz 15 lutego 2025 przez oleksik Użytkownik (630 p.)

tak mam połączone w odpowiedniej kolejnosci. Już sam nie wiem co nie tak jest.


 

<?php
// Połączenie z bazą danych
$servername = "serwer2554467.home.pl"; // Adres serwera
$username = "39286266_klienci";        // Nazwa użytkownika
$password = "Ciekawy13_!#";            // Hasło
$dbname = "39286266_klienci";           // Nazwa bazy danych

// Włącz wyświetlanie błędów
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// Tworzenie połączenia
$conn = new mysqli($servername, $username, $password, $dbname);

// Sprawdź połączenie
if ($conn->connect_error) {
    die("Połączenie nie powiodło się: " . $conn->connect_error);
}
echo "Połączenie udane!";



// Sprawdzenie połączenia
if ($conn->connect_error) {
    die("Połączenie nieudane: " . $conn->connect_error);
} else {
    echo "Połączenie działa!<br>"; // Jeśli połączenie działa
}

// Pobranie danych z formularza
if (isset($_POST['name'], $_POST['email'], $_POST['date'], $_POST['godzina'])) {
    $name = $_POST['name'];
    $email = $_POST['email'];
    $date = $_POST['date'];
    $godzina = $_POST['godzina'];

    // Przygotowanie zapytania SQL (zabezpieczone)
    $stmt = $conn->prepare("INSERT INTO formularz (name, email, date, godzina) VALUES (?, ?, ?, ?)");
    $stmt->bind_param("ssss", $name, $email, $date, $godzina);

    // Wykonanie zapytania
    if ($stmt->execute()) {
        echo "Dane zostały zapisane!<br>";
    } else {
        echo "Błąd: " . $stmt->error . "<br>";
    }

    // Zamknięcie zapytania
    $stmt->close();
} else {
    echo "Brak danych w formularzu!<br>";
}

// Zamknięcie połączenia z bazą danych
$conn->close();
?>

komentarz 15 lutego 2025 przez Arkadiusz Waluk Ekspert (291,530 p.)
Ok, bo zmieniłeś względem poprzedniego kodu nazwę użytkownika na taką samą jak nazwa bazy, stąd myślałem że może coś jest zamienione w parametrach. Sprawdzałeś, że sama baza nazywa się dokładnie tak i hasło też się zgadza?

Zerkałeś np. tutaj https://pomoc.home.pl/baza-wiedzy/polaczenie-z-baza-danych-mysql-na-serwerze-w-home-pl#polaczenie do poradnika Home? Wskazują, aby jako hosta użyć "Host: localhost (dla MySQL 5.7) lub mysql8 (dla MySQL 8.0)", a u Ciebie to jest nazwa serwerXXXX.home.pl, więc spróbowałbym ustawić jak podają. Teoretycznie powinno to działać jeśli wskazuje na ten sam serwer, ale może traktuje to wtedy jako połączenie z zewnątrz serwera, które domyślnie są pewnie zablokowane dla bezpieczeństwa.
komentarz 15 lutego 2025 przez oleksik Użytkownik (630 p.)

niestety dalej nic

błąd:

Fatal error: Uncaught mysqli_sql_exception: Access denied for user '39286266_klienci'@'localhost' (using password: YES) in /form-handler.php:14 Stack trace: #0 /form-handler.php(14): mysqli->__construct() #1 {main} thrown in /form-handler.php on line 14




kod:

 

<?php
// Połączenie z bazą danych
$servername = "localhost"; // Adres serwera
$username = "39286266_klienci";        // Nazwa użytkownika
$password = "Ciekawy13_!#";            // Hasło
$dbname = "39286266_klienci";           // Nazwa bazy danych

// Włącz wyświetlanie błędów
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// Tworzenie połączenia
$conn = new mysqli($servername, $username, $password, $dbname);

// Sprawdź połączenie
if ($conn->connect_error) {
    die("Połączenie nie powiodło się: " . $conn->connect_error);
}
echo "Połączenie udane!";



// Sprawdzenie połączenia
if ($conn->connect_error) {
    die("Połączenie nieudane: " . $conn->connect_error);
} else {
    echo "Połączenie działa!<br>"; // Jeśli połączenie działa
}

// Pobranie danych z formularza
if (isset($_POST['name'], $_POST['email'], $_POST['date'], $_POST['godzina'])) {
    $name = $_POST['name'];
    $email = $_POST['email'];
    $date = $_POST['date'];
    $godzina = $_POST['godzina'];

    // Przygotowanie zapytania SQL (zabezpieczone)
    $stmt = $conn->prepare("INSERT INTO formularz (name, email, date, godzina) VALUES (?, ?, ?, ?)");
    $stmt->bind_param("ssss", $name, $email, $date, $godzina);

    // Wykonanie zapytania
    if ($stmt->execute()) {
        echo "Dane zostały zapisane!<br>";
    } else {
        echo "Błąd: " . $stmt->error . "<br>";
    }

    // Zamknięcie zapytania
    $stmt->close();
} else {
    echo "Brak danych w formularzu!<br>";
}

// Zamknięcie połączenia z bazą danych
$conn->close();
?>


wydaje mi sie ze cos glębiej siedzi. Jakich plików potrzebujesz jeszcze aby ocenic sytuacje?

komentarz 16 lutego 2025 przez Arkadiusz Waluk Ekspert (291,530 p.)
Nie wydaje mi się, aby mogło tu być coś więcej, jeśli to jest ten plik z którego następuje połączenie do bazy, to tu wszystko jest. Sam kod połączenia jest prosty, wygląda poprawnie, połączenie powinno zadziałać o ile dane dostępowe do bazy są poprawne. Może po prostu spróbuj zmienić w panelu hasło do bazy danych zgodnie z tym co jest opisane tutaj: https://pomoc.home.pl/baza-wiedzy/jak-zmienic-haslo-do-utworzonej-juz-bazy-danych-na-hostingu i na takie samo popraw w kodzie. Sprawdź może jeszcze wersję MySQL której używasz, bo Home w artykule linkowanym wcześniej podaje hosta localhost dla wersji 5.7, a dla wersji 8 jest inny host oraz inny port (mysql8 i 3380 wg instrukcji), może próbujesz się podłączyć do bazy nie w tej wersji.

Podobne pytania

0 głosów
2 odpowiedzi 1,478 wizyt
0 głosów
1 odpowiedź 454 wizyt
pytanie zadane 1 sierpnia 2025 w PHP przez stanley1984 Nowicjusz (160 p.)
0 głosów
1 odpowiedź 1,559 wizyt
pytanie zadane 5 lutego 2019 w C i C++ przez lolk45 Gaduła (3,210 p.)

93,756 zapytań

142,715 odpowiedzi

323,363 komentarzy

63,353 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...