![]() |
![]() |
-tr3v0rr- |
![]()
Post
#1
|
Goście ![]() |
Witam,
Mam napisany system w którym co minutę cron sprawdza zapisane w bazie adresy i jeżeli jest tam przekierowanie to robi update adresu, jednak wymagania systemu sa takie ze adresy musza byc unikalne tak wiec jak aktualizujac adres cron podmieni go na juz istniejacy nie moze wykonac zapytania i system sie "zawiesza" na tym adresie. Dla takich przypadkow chcialbym dac np, status "duplikat" i nie zmieniac tego adresu, napewno nie moge go usunac. Przydaloby sie update ... on duplicate key update ale takiego czegos nie ma, moglbym sprawdzac najpierw czy taki adres istnieje juz w bazie ale to by dodalo od 20 do 100 dodatkowych zapytan na minute czego wolalbym uniknac jesli sie tylko da, baza docelowo bedzie zawierala okolo milion adresow. Macie moze jakis pomysl ? Pozdrawiam Trevor |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 702 Pomógł: 65 Dołączył: 16.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
wiec za nim wykonasz UPDATE , zrób SELECT i sprawdź istnienie możliwego duplikatu w bazie
-------------------- Nie udzielam pomocy poprzez PW
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat moglbym sprawdzac najpierw czy taki adres istnieje juz w bazie ale to by dodalo od 20 do 100 dodatkowych zapytan na minute czego wolalbym uniknac jesli sie tylko da No to rob update jak do tej pory, a w sytuacji gdy ten update sie nie powiedzie to sprawdz numer bledu. Jesli to bedzie numer odpowiadajacy za duplikacje, to wowczas oznacz ten rekord jako duplikat. Wowczas dodatkowe zapytania bedziesz robil tylko dla duplikatow a nie dla wszystkich -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
-tr3v0rr- |
![]()
Post
#4
|
Goście ![]() |
@nospor jestes genialny, nie wiedzialem ze tak mozna. Moglbys mi podpowiedziec jeszczcze jak albo czego szukac w google zeby sprawdzic jakie sa kody bledow oraz jak je sprawdzac ? pozdrawiam goraco
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Nie wiem czego uzywasz do obslugi bazy, ale jesli mysql_query, to blad zapytania zwroci ci mysql_errno()
http://pl1.php.net/manual/en/function.mysql-errno.php Zas kody bledow sa w dokumentacji mysql. Poza tym mozesz sobie zobaczyc jaki numer bledu zwroci ci mysql_errno dla duplikatu i bedziesz wiedzial ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
-tr3v0rr- |
![]()
Post
#6
|
Goście ![]() |
Uzywam PDO, skonstrulowalem zapytanie w ten sposob:
Wyskakuje "Niby wszystko ok" a zapytanie sie nie update'uje ![]() |
|
|
-tr3v0rr- |
![]()
Post
#7
|
Goście ![]() |
Już mam
![]() $blad = $zapytanie -> errorInfo(); if ($blad[1] == 1062){ echo 'wpis zostal zduplikowany'; } |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 21:17 |