Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Błąd połączenia z bazą danych
piotrino
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 10.12.2012

Ostrzeżenie: (0%)
-----


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
Powód edycji: [Spawnm]:
Go to the top of the page
+Quote Post
Konochamaru
post
Post #2





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 26.02.2013

Ostrzeżenie: (0%)
-----


  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ć
Powód edycji: [Spawnm]:
Go to the top of the page
+Quote Post
klocu
post
Post #3





Grupa: Zarejestrowani
Postów: 291
Pomógł: 45
Dołączył: 21.08.2007

Ostrzeżenie: (0%)
-----


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.

Ten post edytował klocu 26.02.2013, 20:48:08
Go to the top of the page
+Quote Post
piotrino
post
Post #4





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 10.12.2012

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Konochamaru
post
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 26.02.2013

Ostrzeżenie: (0%)
-----


Hehe , a jak ma zapisać ? Jak nie dasz polecenia które to zapisuje INSERT TO smile.gif
Go to the top of the page
+Quote Post
piotrino
post
Post #6





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 10.12.2012

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
_Borys_
post
Post #7





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

Ostrzeżenie: (0%)
-----


Zmienne w zapytaniu do bazy bez apostrofów.
Go to the top of the page
+Quote Post
patryczakowy
post
Post #8





Grupa: Zarejestrowani
Postów: 420
Pomógł: 44
Dołączył: 22.10.2008

Ostrzeżenie: (0%)
-----


  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ą

Ten post edytował patryczakowy 28.02.2013, 23:47:02


--------------------
Sztuką jest widzieć to czego nie widać.
Go to the top of the page
+Quote Post
piotrino
post
Post #9





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 10.12.2012

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
luke18dg
post
Post #10





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 26.03.2011
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


  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.
Go to the top of the page
+Quote Post
piotrino
post
Post #11





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 10.12.2012

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
pitu
post
Post #12





Grupa: Zarejestrowani
Postów: 476
Pomógł: 96
Dołączył: 10.04.2008
Skąd: Koszalin

Ostrzeżenie: (0%)
-----


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,...)


--------------------
HTML/CSS/JS: jsfiddle
SQL: sqlfiddle
Go to the top of the page
+Quote Post
viking
post
Post #13





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
piotrino
post
Post #14





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 10.12.2012

Ostrzeżenie: (0%)
-----


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ę/?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 03:49