Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Niedodawanie tego samego
--anonim--
post
Post #1





Goście







Witam, jak zrobić, aby do bazy nie dodawało się drugi raz np. takie samo imię i nazwisko? Próbowałem to zrobić w taki sposób, ale nie działa:

  1. $ins=mysql_query("SELECT * FROM `tabela` WHERE imie='$imie', nazwisko='$nazwisko'",$connection);
  2.  
  3. if(mysql_num_rows($ins)==0){
  4. mysql_query("INSERT INTO `tabela` SET imie='$imie', nazwisko='$nazwisko'");
  5. echo "dodano!";
  6. } else {
  7. echo "blad! podane imie i nazwisko znajduje sie w bazie";
  8. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Kużdo
post
Post #2





Grupa: Zarejestrowani
Postów: 181
Pomógł: 14
Dołączył: 4.06.2008

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


Po pierwsze, to mylisz składnię INSERT i UPDATE.
Po drugie, w SELECT nie rozdziela się warunków przecinkiem tylko operatorami logicznymi np. AND.

Więc kod powinien przynajmniej tak wyglądąć:
  1. $ile = mysql_query("SELECT * FROM `tabela` WHERE `imie` = '$imie' AND `nazwisko` = '$nazwisko'");
  2.  
  3. if(!mysql_num_rows($ile))
  4. {
  5. $dodaj = mysql_query("INSERT INTO `tabela` (`imie`, `nazwisko`) VALUES ('$imie', '$nazwisko')");
  6. echo 'Dodano!';
  7. }
  8. else echo "Blad! Podane Imie i Nazwisko jest juz w bazie!";


Ten post edytował Kużdo 2.05.2012, 13:45:45
Go to the top of the page
+Quote Post
Niktoś
post
Post #3





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Jeśli nie chcesz dodawać drugi raz tego samego użytkownika do bazy ,musisz najpierw sprawdzić jego występowanie w bazie danych.Proponowałbym zainteresować się poleceniem EXISTS w MySQL.
Go to the top of the page
+Quote Post
gothye
post
Post #4





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


Lub założeniem klucza UNIQUE na pola imie ,nazwisko


--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post
Niktoś
post
Post #5





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Cytat
Lub założeniem klucza UNIQUE na pola imie ,nazwisko

Ale czy to coś zmieni?Czy nie wysypie błędem podczas próby dodania tego samego użytkownika?Na pewno kwerenda zwróci false ,ale czy dodatkowo nie wysypie jakimś wyjątkiem?
Go to the top of the page
+Quote Post
mortus
post
Post #6





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Cytat(Kużdo @ 2.05.2012, 14:13:44 ) *
Po pierwsze, to mylisz składnię INSERT i UPDATE.
Mylisz się. Taka składnia zapytania INSERT również jest dozwolona i prawidłowa, sam sprawdź.

Cytat(Niktoś @ 2.05.2012, 14:55:58 ) *
Jeśli nie chcesz dodawać drugi raz tego samego użytkownika do bazy ,musisz najpierw sprawdzić jego występowanie w bazie danych.Proponowałbym zainteresować się poleceniem EXISTS w MySQL.
W MySQL EXISTS używamy raczej do czegoś innego i tylko z podzapytaniami lub poleceniami DDL (jak CREATE DATABASE, CREATE TABLE, itp.). W tak banalnym przypadku wystarczy zwykły SELECT zaproponowany przez Kużdo. Nie ma tutaj potrzeby dodatkowo obciążać bazy danych.

Cytat(Niktoś @ 2.05.2012, 15:01:41 ) *
Ale czy to coś zmieni?Czy nie wysypie błędem podczas próby dodania tego samego użytkownika?Na pewno kwerenda zwróci false ,ale czy dodatkowo nie wysypie jakimś wyjątkiem?
Tutaj masz rację, zapytanie się nie wykona i zostanie zwrócony odpowiedni komunikat błędu. Klucz UNIQUE to raczej "wsparcie" dla bazy danych, a nie aplikacji, która z tej bazy danych korzysta.


Pomijając to wszystko. W powiecie, w którym mieszkam mieszkają również co najmniej cztery osoby, które noszą takie samo imię i takie samo nazwisko, jak ja. Imię i nazwisko wbrew pozorom wcale nie muszą być czymś unikalnym.

Ten post edytował mortus 2.05.2012, 17:50:48
Go to the top of the page
+Quote Post
Kużdo
post
Post #7





Grupa: Zarejestrowani
Postów: 181
Pomógł: 14
Dołączył: 4.06.2008

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


Cytat(mortus @ 2.05.2012, 18:49:06 ) *
Mylisz się. Taka składnia zapytania INSERT również jest dozwolona i prawidłowa, sam sprawdź.

Faktycznie. Całe życie używałem pierwszego sposobu, a tego drugiego do tej pory nie znałem... Aż wstyd. Dzięki za info.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 07:42