Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Update bazy danych, Pomoc przy skrypcie do bazy mysql
Archon_1
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 17.04.2005

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


Mam taki oto kod:
  1. <?php
  2.  
  3. $pesel = $_SESSION['pesel'];
  4. //odczytanie wartosci z formularza
  5. $imie = $_POST['imie'];
  6. $nazwisko = $_POST['nazwisko'];
  7. $miejscowosc = $_POST['miejscowosc'];
  8. $ulica = $_POST['ulica'];
  9. $nr_domu = $_POST['nr_domu'];
  10. $kod_pocztowy = $_POST['kod_pocztowy'];
  11. $ser_i_nr_ubezp = $_POST['ser_i_nr_ubezp'];
  12.  
  13. //wprowadzenie nowych danych na podstawie peselu
  14.  
  15. lacz_bd_dane_os();
  16.  
  17. //zapytanie
  18. $sql = "UPDATE pacjenci SET imie = '$imie', nazwisko = '$nazwisko', 
  19. miejscowosc = '$miejscowosc', ulica = '$ulica', nr_domu = '$nr_domu',kod_pocztowy = '$kod_pocztowy', 
  20. nr_ubezpieczenia = '$ser_i_nr_ubezp'
  21. WHERE pesel = '$pesel' ";
  22.  
  23. //wykonanie zapytania
  24.  
  25. wyk_zapytania($sql);
  26. ?>


i gdy go wykonuje wychodzi mi zapytanie nieudane(moj komunikat w funkcji wyk_zapytania) Co zlego jest w linijce
  1. <?php
  2. //zapytanie
  3. $sql = "UPDATE pacjenci SET imie = '$imie', nazwisko = '$nazwisko', 
  4. miejscowosc = '$miejscowosc', ulica = '$ulica', nr_domu = '$nr_domu',kod_pocztowy = '$kod_pocztowy', 
  5. nr_ubezpieczenia = '$ser_i_nr_ubezp'
  6. WHERE pesel = '$pesel' ";
  7. ?>

help

(IMG:http://forum.php.pl/uwaga.gif)
Poprawiłem
~mike_mech
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
huntercs
post
Post #2





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 6.02.2005

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


możesz pokazać definicje funkcji wyk_zapytania() ? może tam coś jest nietak
Go to the top of the page
+Quote Post
Archon_1
post
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 17.04.2005

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


Ona jest ok bo wykorzystuje ją do innych zapytań i nie zwraca błędnego komunikatu
Go to the top of the page
+Quote Post
Najki
post
Post #4





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Poznań

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


Wygląda OK, ale może wstaw pod funkcją wyk_zapytania() coś takiego i powiedz co zwraca:
  1. <?php
  2. ?>

A może po prostu zrobiłeś jakąś literówkę przy nazwie pola w bazie danych (tutaj pola wyglądają OK, więc może literówkę przy tworzeniu tabeli (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ) ?

Pomijam fakt, że jest to Twój autentyczny kod (chodzi o sposób odczytywania zmiennych z tablicy $_POST) to nie jest zbyt bezpieczny. Polecam temat o SQL Injection:
http://forum.php.pl/index.php?showtopic=23258
Go to the top of the page
+Quote Post
Arrow
post
Post #5





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 5.05.2003

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


  1. <?php
  2. //zapytanie
  3. $sql = "UPDATE pacjenci SET 
  4. imie = '$imie', 
  5. nazwisko = '$nazwisko', 
  6. miejscowosc = '$miejscowosc', 
  7. ulica = '$ulica', 
  8. nr_domu = '$nr_domu',
  9. kod_pocztowy = '$kod_pocztowy', 
  10. nr_ubezpieczenia = '$ser_i_nr_ubezp'
  11. WHERE pesel = '$pesel' ";
  12. ?>


zamienilbym na (nie pomoze ale wszystko staje sie czytelniejsze)

  1. <?php
  2. //zapytanie
  3. $sql = "UPDATE pacjenci SET 
  4.  imie = '".$imie."', 
  5.  nazwisko = '".$nazwisko."', 
  6.  miejscowosc = '".$miejscowosc."', 
  7.  ulica = '".$ulica."', 
  8.  nr_domu = '".$nr_domu."',
  9.  kod_pocztowy = '".$kod_pocztowy."', 
  10.  nr_ubezpieczenia = '".$ser_i_nr_ubezp."'
  11. WHERE pesel = '".$pesel."' ;";
  12. ?>
Go to the top of the page
+Quote Post
Archon_1
post
Post #6





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 17.04.2005

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


Wrzuciłem komendę
Kod
echo mysql_error();
i wyswietla mi coś takiego
Kod
Data too long for column 'nazwisko' at row 1


Nie iem dlaczego taki błąd wyskakuje skoro w bazie danych pole nazwisko zadeklarowane jest jako varchar(40) i moje nazwiska nie przekraczają tego ograniczenia. Są co najwyżej 11 literowe

help (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif)
Go to the top of the page
+Quote Post
Fipaj
post
Post #7





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 19.01.2005
Skąd: Warszawa

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


Zrób print($sql) aby przekonać się, jakie jest zapytanie. Może jednak jest za długie?

Jeśli nie, spróbuj wykonać to zapytanie w MySQL Monitorze i phpMyAdmin...
Go to the top of the page
+Quote Post
Archon_1
post
Post #8





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 17.04.2005

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


Niestety to nie pomogło. Czy ktoś ma jeszcze jakieś pomysły??
Dodam że gdy dodam rekord to moge go raz edytowac(poprzez UPDATE) a pozniej pojawia sie to co wyżej.
Po części rozwiązałem problem. Błąd pojawia się tylko wtedy gdy wpisuje dane z polskimi danymi do bazy. Jak to rozwiązać? Co zmienić w bazie. Mam mysql 5.xx

Widze że nikt tu mi nie pomoże. Czy mogę przenieśc temat na forum mysql(pytanie do admina)

Ten post edytował Archon_1 3.03.2006, 12:29:57
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 07:08