Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nie dodawaj danych z formularza do bazy jeżeli te istnieją - jak ?
x X x
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 21.01.2014

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


Chciał bym napisać obsługę wyjątku, który sprawdzi, czy dodawane dane do bazy danych istnieją. Jeżeli tak - wyświetli komunikat, że takie dane już istnieją i zapytanie nie zostanie wykonane.

Powiedzmy, że mam takie zapytanie:

  1. <?php
  2.  
  3. $insert = "INSERT INTO tabela VALUES ('".$_POST['imie']."', '".$_POST['nazwisko']."', '".$_POST['email']."')";
  4.  
  5. $insert_osoba = parent::getDB()->run($insert);
  6.  
  7. echo 'potwierdzenie dodania';
  8.  
  9. ?>


Co teraz zrobić? Znalazłem taką funkcję jak mysql_insert_id(), ale nie wiem czy tutaj ją mogę wykorzystać. Wtedy zapytanie powinno zawierać jeszcze słowo IGNORE.

Tabela tabela pole ID ma unikatowe i uzupełniane automatycznie. Wartość tego pola nie jest przekazywana w formularzu, tylko powyższe dane.

Dodam, że mój formularz jest umieszczony w pętli foreach, więc w zapytaniu wykorzystuje jeszcze zmienną $i, ale to nie jest teraz istotne.

Ten post edytował x X x 27.03.2014, 16:53:20
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

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


Po pierwsze nie rób COUNT, bo albo dostaniesz 1, albo 0, dlatego, że z założenia masz tam unikatowe rekordy. Po co więc męczyć bazę i zliczać.
Zrób coś takiego:
  1. SELECT 1 FROM tabela WHERE imie='tu imie',nazwisko='tu nazwisko',email='tu email'
  2. /* zamiast select email,imie,nazwisko */

Ale jeszcze lepiej gdybyś sprawdził co dostajesz w $insert_osoba w przypadku duplikatu i błędnego zapytania, bo to może rozwiązać kwestię dodatkowego dopytywania bazy czy użytkownik istnieje.

Ten post edytował trueblue 27.03.2014, 18:03:34
Go to the top of the page
+Quote Post

Posty w temacie


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: 1.01.2026 - 07:33