Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Niedodawanie tego samego
--anonim--
post 2.05.2012, 12:29:05
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
Niktoś
post 2.05.2012, 14:01:41
Post #2





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 2.05.2012, 17:49:06
Post #3





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

Posty w temacie


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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 14:54