Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Update bazy danych
Forum PHP.pl > Forum > PHP
Archon_1
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


Poprawiłem
~mike_mech
huntercs
możesz pokazać definicje funkcji wyk_zapytania() ? może tam coś jest nietak
Archon_1
Ona jest ok bo wykorzystuje ją do innych zapytań i nie zwraca błędnego komunikatu
Najki
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 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
Arrow
  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. ?>
Archon_1
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 sadsmiley02.gif
Fipaj
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...
Archon_1
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)
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.