Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem ze zmianą danych w bazie
Forum PHP.pl > Forum > Bazy danych > MySQL
adif
Witam wszystkich...

mam mały dylemat. Nie pierwszy raz działam na bazach danych i do tej pory nie pomyślałem że mogę mieć problem z taką rzeczą. Mianowicie:

czy to usuwam czy po prostu aktualizuje dane w bazie natrafiłem błąd kiedy zapytanie się nie wykonuje a pokazuje mi że jest wszystko ok:

Oto bardzo prosty przykład:
zakładamy że istnieje baza klient i ma dwa rekordy: imie oraz nazwisko.
Wypełnijmy ją danymi:
1. Jan Nowak
2. Piotr Pawlak

Oto kod:
  1. <?php
  2.  
  3. $imie='Jan';
  4. $nazwisko='Kowalski';
  5.  
  6. if(zmien_dane($imie, $nazwisko))
  7. echo 'Zmiany zapisane';
  8. else
  9. echo 'Nie wprowadzono zmian';
  10.  
  11. function zmien_dane($imie, $nazwisko)
  12. {
  13.  
  14. $lacz = lacz_bd(); //połączenie z bazą danych
  15. $zapytanie = "update klient set imie = '$imie' where nazwisko='$nazwisko'";
  16. $wynik = @mysql_query($zapytanie);
  17. if(!$wynik)
  18. return false;
  19.  
  20. return true;
  21. }
  22.  
  23. ?>

I teraz tak: w bazie nie istnieje nazwisko "Kowalski" więc nie wprowaza się żadnych zmian do bazy, ale jednak funkcja zwraca mi true co oznacza że zmiany zostały dokonane co jest nie prawdą.

Proszę was o pomoc w czym może byc problem.
nospor
odsylam do manuala:
http://pl.php.net/manual/pl/function.mysql-query.php

jesli nadal nie wiesz czemu wal do mnie na PW.

zamykam

edit:
dołaczam wyciag z manuala:
Cytat
mysql_query() zwraca identyfikator wyniku (lub FALSE w przypadku niepowodzenia) jedynie dla zapytań typu SELECT, SHOW, EXPLAIN i DESCRIBE. Dla innych zapytań SQL mysql_query() zwraca TRUE lub FALSE informując czy zapytanie zakończyło się sukcesem czy też nie. Jeśli nie została zwrócona wartość FALSE to znaczy, że zapytanie było prawidłowe i może być wykonane przez serwer. Nie mówi natomiast nic o liczbie przetworzonych lub zwróconych wierszy. Jest również możliwe, że zapytanie zostanie wykonane poprawnie, nie przetwarzając lub zwracając żadnych wierszy.


Cytat
Przyjmując, że zapytanie się powiodło, można użyć mysql_num_rows() by uzyskać informację o liczbie wierszy zwróconych w instrukcji SELECT, lub mysql_affected_rows() w celu uzyskania liczby wierszy przetworzonych przez instrukcje DELETE, INSERT, REPLACE i UPDATE.
kszychu
Spróbuj może usunąć @ sprzed mysql_query() @ powoduje, że funkcja nic nie zwraca.
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-2024 Invision Power Services, Inc.