Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Błąd połączenia z bazą danych
Forum PHP.pl > Forum > PHP
piotrino
Witam. Mam problem z połączeniem z bazą danych po utworzeniu skryptu .php. Podaję skrypt php:
  1. <?php
  2. //deklarowanie zmiennych
  3. $imie = $_POST['imie'];
  4. $nazwisko = $_POST['nazwisko'];
  5. $phone = $_POST['phone'];
  6. $komunikator = $_POST['komunikator'];
  7. $lacze = $_POST['lacze'];
  8. if (!$imie || !$nazwisko || !$phone || !$komunikator || !$lacze)
  9. {
  10. echo "<strong><center>Nie podano wszystkich potrzebnych danych.<br />"
  11. ."Wróć do poprzedniej strony i spróbuj ponownie.</strong></center><br/><br/>";
  12. }
  13. $imie = addslashes($imie);
  14. $nazwisko = addslashes($nazwisko);
  15. $phone = addslashes($phone);
  16. $komunikator = addslashes($komunikator);
  17. $lacze = addslashes($lacze);
  18. @$db = mysql_pconnect("http://mysql.cba.pl", "robik", "*******");
  19. if (!$db)
  20. {
  21. print "<center><strong>Nie można nawiązać połączenia z bazą danych</center></strong><br/><br/>";
  22. }
  23. mysql_select_db("dane");
  24.  
  25. ?>]

Stworzyłem na serwerze mysl cba.pl tabelę dane. Przy probie połączenia z bazą danych tzn po wypełnieniu wszystkich pól i wysłaniu dostaję komunikat:
Kod
Nie można nawiązać połączenia z bazą danych
w czym jest problem? czy dobrze dałem :
Kod
@$db = mysql_pconnect("http://mysql.cba.pl", "robik", "*******");
namiary na serwer? uzytkownik i hasło pasuje na 100% ale nie mogę się połączyć z bazą danych. W php raczkuję dopiero, i cały dzień zajęło mi czytanie i próba utworzenia tego w .php....Pozdrawiam serdecznie
Konochamaru
  1. <?php
  2. //deklarowanie zmiennych
  3. $imie = $_POST['imie'];
  4. $nazwisko = $_POST['nazwisko'];
  5. $phone = $_POST['phone'];
  6. $komunikator = $_POST['komunikator'];
  7. $lacze = $_POST['lacze'];
  8. if (!$imie || !$nazwisko || !$phone || !$komunikator || !$lacze)
  9. {
  10. echo "<strong><center>Nie podano wszystkich potrzebnych danych.<br />"
  11. ."Wróć do poprzedniej strony i spróbuj ponownie.</strong></center><br/><br/>";
  12. }
  13. $imie = addslashes($imie);
  14. $nazwisko = addslashes($nazwisko);
  15. $phone = addslashes($phone);
  16. $komunikator = addslashes($komunikator);
  17. $lacze = addslashes($lacze);
  18. @$db = mysql_connect("http://mysql.cba.pl", "robik", "*******");
  19. if (!$db)
  20. {
  21. print "<center><strong>Nie można nawiązać połączenia z bazą danych</center></strong><br/><br/>";
  22. }
  23. mysql_select_db($db,"dane");
  24.  
  25. ?>]



Sprubój tak zrobić
klocu
Serio: http://mysql.cba.pl?
Koniecznie bez http://

A po drugie nie terminuj błędów (@) bo sam sobie szkodzisz - obsłuż je tak jak trzeba, a nie maskuj ich wystąpienia.
piotrino
Cytat(klocu @ 26.02.2013, 20:46:59 ) *
Serio: http://mysql.cba.pl?
Koniecznie bez http://

Wielkie dzięki, mały błąd ale jednak błąd. Teraz mi wysłało zapytania do bazy danych. Ale nie zapisało mi ich w bazie danych. Mam puste recordy... Gdzie zrobiłem błąd , że nie zapisało mi danych , które zostały podane w formularzu?
Cytat(klocu @ 26.02.2013, 20:46:59 ) *
A po drugie nie terminuj błędów (@) bo sam sobie szkodzisz - obsłuż je tak jak trzeba, a nie maskuj ich wystąpienia.

Co masz dokładnie na myśli? Usunąłem (@) to , i to wystarczy, i jak ewentualnie muszę to obsłużyć...? Sorki za laickie pytania, ale dopiero od kilkunastu godzin siedzę nad stworzeniem skrtyptu php do tego formularza, i na błędach które mi wychodzą to się uczę powoli...Pozdrawiam
Konochamaru
Hehe , a jak ma zapisać ? Jak nie dasz polecenia które to zapisuje INSERT TO smile.gif
piotrino
Cytat(Konochamaru @ 27.02.2013, 15:54:40 ) *
Hehe , a jak ma zapisać ? Jak nie dasz polecenia które to zapisuje INSERT TO smile.gif

Dzięki za podpowiedz... Tak myślałem że tego insert mi brakuje smile.gif Ale mimo dodania polecenia insert do plliku .php , niby mi wysyła na serwer dane, ale nie zapisuje mi ich.. Mam po prostu po wysłaniu białe tło...A powininien mieć komunikat o wysłaniu danych do bazy danych. ...Pokombinuję jeszcze . W pliku klient.php nie mam żadnych błędów składniowych. Podaję koncówkę conf pliku klient.php:
  1. print "<center><strong>Nie można nawiązać połączenia z bazą danych</center></strong><br/><br/>";
  2. }
  3. mysql_select_db("servpad_cba_pl");
  4.  
  5. $query = "insert into dane values ('$imie','$nazwisko','$phone','$komunikator','$lacze')";
  6. $result = mysql_query($query);
  7.  
  8. if ($result)
  9. print "</strong><center>Dane zostały poprownie wysłane do bazy danych.</strong></center>";
  10. ?>
Niby wszystko w porządku ale pokazuje mi dodanych rekordów w bazie danych... Pozdrawiam serdecznie
_Borys_
Zmienne w zapytaniu do bazy bez apostrofów.
patryczakowy
  1. if ($result)
  2. print "</strong><center>Dane zostały poprownie wysłane do bazy danych.</strong></center>";
  3. else
  4. print "Problem z zapisem";


i niebędzie pokazywało się białe tło smile.gif

zamiast addslashes użyj mysql_real_escape_string - addslashes niezabezpiecza przed SQL injection

a i jescze jedno taki insert jak ty wykonujesz musi mieć zachowaną kolejność pól i jesli pierwsze pole jest np id autoincrement powinneś użyć NULL musi także zgadzać się ilość poł w zapytani z tymi co są w bazie jednym słowem jest to bardzo niepraktyczne bo jak zmienisz strukturę bazy to zapytania się posypią
piotrino
Cytat(patryczakowy @ 28.02.2013, 23:38:49 ) *
  1. if ($result)
  2. print "</strong><center>Dane zostały poprownie wysłane do bazy danych.</strong></center>";
  3. else
  4. print "Problem z zapisem";


i niebędzie pokazywało się białe tło smile.gif

zamiast addslashes użyj mysql_real_escape_string - addslashes niezabezpiecza przed SQL injection

Dzięki, ale już sobie poradziłem, wcześniej utworzyłem tabelę i dane do niej w phpmyadmin przez program graficzny, więc wykasowałem tabelę i na nowo utworzyłem z linii poleceń i teraz mi dopiero zapisało rekordy.... Teraz sprawdzę to od strony bezpieczeństwa... To radzisz mi uzyc mysql_real_escape_string zamiast addshashes? Pozdrawiam .

P.S Nie wiem czy dobrze się uczę php, ale nie uczę się od samego początku, tylko uczę się na podpatrywaniu innych składniu tego typu i próbuję tworzyć własny kod metodami prób i błędów...
luke18dg
  1. mysql_query('SET NAMES \'utf8\' COLLATE \'utf8_polish_ci\';');

Piękna polecenie, a tyle ułatwia życie. Polskie znaki w bazie, jest z tym trochę zabawy.
piotrino
Cytat(luke18dg @ 1.03.2013, 00:01:28 ) *
  1. mysql_query('SET NAMES \'utf8\' COLLATE \'utf8_polish_ci\';');

Piękna polecenie, a tyle ułatwia życie. Polskie znaki w bazie, jest z tym trochę zabawy.

Dzięki , sprzydało się. Dzięki temu mam polskie znaki w bazie smile.gif. Mam problem z dodaniem rekordu do tabeli : klient_id:
  1. CREATE TABLE dane
  2. ( klient_id int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. imie char(50)NOT NULL,
  4. nazwisko char(50) NOT NULL,
  5. phone varchar(12) NOT NULL,
  6. komunikator char (50) NOT NULL,
  7. lacze char (50) NOT NULL)

Tabela wgrywa się bez problemu , ale przy próbie wysłania formularze ze strony html mam komunikat:
Kod
Problem z zapisem
Jak utworzę tabelę bez klient_id :
  1. CREATE TABLE dane
  2. (
  3. imie char(50)NOT NULL,
  4. nazwisko char(50) NOT NULL,
  5. phone varchar(12) NOT NULL,
  6. komunikator char (50) NOT NULL,
  7. lacze char (50) NOT NULL)
to bez problemu dodaje mi rekordy do bazy danych. Wcześniej podałem w poście konf pliku klient.php. W jaki sposób mogę zrobić , żeby mi po wpisaniu danych dodawało automatycznie numerację klient_id? Pozdrawiam
pitu
Twoje zapytanie:
Kod
"insert into dane values ('$imie','$nazwisko','$phone','$komunikator','$lacze')";


Do kolumny klient_id typu int chcesz wstawić string $imie. Użyj takiej budowy zapytania, w której podajesz nazwy kolumn:
Kod
INSERT INTO table_name (kolumna1, kolumna2, kolumna3,...)
VALUES (wartosc1, wartosc2, wartosc3,...)
viking
Cytat(piotrino @ 28.02.2013, 23:49:50 ) *
P.S Nie wiem czy dobrze się uczę php, ale nie uczę się od samego początku, tylko uczę się na podpatrywaniu innych składniu tego typu i próbuję tworzyć własny kod metodami prób i błędów...


Dobra rada. Uczysz się czegoś co jest w manualu oznaczone jako do wywalenia i dłużej nie rozwijane (mowa o rozszerzeniu mysql). Przerzuć się na PDO. Znikną twoje problemy z jakimś addslashes, mysql_real_escape_string, poprawnością typów danych i z czym tam jszcze masz obecnie problem.
piotrino
Cytat(viking @ 1.03.2013, 09:33:44 ) *
Dobra rada. Uczysz się czegoś co jest w manualu oznaczone jako do wywalenia i dłużej nie rozwijane (mowa o rozszerzeniu mysql). Przerzuć się na PDO. Znikną twoje problemy z jakimś addslashes, mysql_real_escape_string, poprawnością typów danych i z czym tam jszcze masz obecnie problem.

Dzięki za radę. Skorzystam z niej. Jak będę miał czas to zmienię to na PDO. Mam pytanie dotyczące odczytywania formularza po wysłaniu danych. Na razie odczytuje (wysyła) mi dane do bazy MySql. Odczytuję dane przez phpmyadmin. Czy jest inna możliwość (prostsza)odczytywania danych, niż przez phpmyadmin?? Pozdrawiam


P.S Jak się domyślam to bym musiał utworzyć plik .php i napisać skrypt , który po wysłaniu formularza pokazuje mi dane , które zostały wysłane w innym oknie(stronie)? O ile się nie mylę/?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.