Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem ze zmianą danych w bazie
adif
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 12.06.2005

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


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Spróbuj może usunąć @ sprzed mysql_query() @ powoduje, że funkcja nic nie zwraca.
Go to the top of the page
+Quote Post

Closed TopicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 04:53