![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Mam problem z moją tabelą, a dokładniej z takimi samymi wpisami, np:
|Kolumna1|Kolumna2| iso abc iso abc i teraz moje pytanie, jak zrobić, żeby więcej niż jedna wartość w kolumnie się nie powtarzała, poprostu żeby sie nadpisywały stare wartości, albo poprostu żeby wógóle nie dodawało nic, jeśli w tabeli istenieje już taki wpis? Wpisy do tabeli dodaje zapomocą skryptu php np: get.php?pole1=&pole2= |
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
i jesli ile_rekordow == 0, to ci sie rekord nie powtarza, else sie powtarza i robisz co uwazasz, blokujesz, updatujesz etc. Ew. zakladasz klucz UNIQUE na te dwa pola, i w przypadku dodania drugiego takiego rekordu dostaniesz blad. Ew. Uzyj INSERT INTO .... ON DUPLICATE KEY.. http://dev.mysql.com/doc/refman/5.0/en/ins...-duplicate.html -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#3
|
|
![]() Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
Przenoszę na Baza danych / MySQL
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 26 Dołączył: 19.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Lepiej będzie:
INSERT IGNORE INTO ... + klucz UNIQUE jak radził dr_bonzo Update nie jest potrzebny bo rekord po prostu ma się nie dodawać. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 0 Dołączył: 12.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dołączęsię mam w tabeli 2 pola id autoincrement i name unique ale niestety w polu name lądują duplikatu chć ponoć nie powinny a sql to nie moja działka ale potrzebuje unikalnych wpisów w tym polu.
Kod dodający to Kod mysql_query("INSERT INTO `keywords`(id,name) VALUES('','$key')");
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
1. Jeśli możesz, to wykonaj zapytanie:
i wklej tutaj wyniki 2. Upewnij się, że UNIQUE założone jest tylko na jedną kolumnę: `name` 3. Upewnij się, że dane które lądują w bazie danych na pewno są unikalne (może jakieś białe znaki sieją spustoszenie ![]() -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 0 Dołączył: 12.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dostałem coś takiego
Kod CREATE TABLE `keywords` (\n `id` int(11) NOT NULL auto_increment,\n `name` varchar(255) collate latin1_general_ci NOT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `name` (`name`)\n) ENGINE=MyISAM AUTO_INCREMENT=4715 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci keye są przepuszczane przez trim żeby wyeliminować białe znaki. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 5 Dołączył: 28.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
a możesz pokazać jak wyglądeją te duplikaty (najlepiej na zrzucie)? name jest UNIQUE więc nie powinno ich być...
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 0 Dołączył: 12.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
A widzisz szopen na zrzucie to widać jednak na końcu jednego jest \r\n ale czy trim nie powinno sobie z tym poradzić?
Pytanie pomocnicze jak się w prosty sposób pozbyć tych z \r\n na końcu z bazy? Ten post edytował Qbexus 31.08.2008, 21:32:15 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 5 Dołączył: 28.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chodzi Ci o odpowiedź na SHOW CREATE to jest ona jak najbardziej poprawna. To są znaki łamania wierszy, które klient SQLowy powinien wyświetlić na konsoli.
PS. to co wstawiłeś to nie zrzut bazy... |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 0 Dołączył: 12.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
no nie wstawiłem zrzutu ale na nim widać białe znaki jest np. 'key' i 'key\r\n' pytanie jak wywalić teraz z bazy 'key\r\n'
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 5 Dołączył: 28.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chodzi o filtr TRIMowy to na szybko coś takiego:
TRIM(TRIM( BOTH "\r\n" FROM nazwapola)) A jak chcesz wywalić coś co kończy się na \r\n to... delete from ... nazwa like '%\r\n\' ? |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 0 Dołączył: 12.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki sprawa załatwiona.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 10:17 |