![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 293 Pomógł: 4 Dołączył: 28.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
Zdrastwujcie riebiata !
Mam miłe zapytanie dotyczące MySQL. Załóżmy że mamy tabelę o nazwie "kotki" a w niej wartości ID IMIĘ 1 xx 2 xx Teraz chce zmienić imię rekordu nr 2. Wykonujemy Update xxx set xxx='ala' where xxx = id = 2; if zapytanie = 1 then { zmieniono pomyslnie} else { insert into kotki id=2,imie='ala } Czy nie da się już w jednym zapytaniu SQL połączyć Update, on error insert new ? Jeżeli istnieje taki rekord, to update, jezeli nie to insert. Tylko żeby upakować to w ramach optymalizacji do jednego "query" (IMG:style_emoticons/default/smile.gif) pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 428 Pomógł: 128 Dołączył: 17.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Możesz spróbować insert ... on duplicate key update.
Tylko pamiętaj o nadaniu UNIQUE dla kolumn, które maja byc unikalne. Pozdrawiam. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Sprawdź najpierw czy istnieje taki rekord przy pomocy mysql_num_rows, jeżeli niema to dodaje do bazy jeżeli jest to aktualizuje. Pozatym Twoje zapytanie dziwnie wygląda, powinno być tak:
A nie tak jak Ty miałeś, bo Twoje zapytanie jest błędne. Kolejne pytanie dlaczego sam ustalasz numer ID? Wydaje mi się że w jednym zapytaniu tego nie upchasz, najpierw musisz sprawdzić czy istnieje taki rekord w bazie, poźniej zrobić update lub insert osobnym zapytaniem. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 32 Dołączył: 21.08.2008 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 293 Pomógł: 4 Dołączył: 28.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
A takie coś zadziała:
Czy twój kod dotyczy opcji w której mam unique ? No niestety nie mogę mieć unique, chociaż ID jest przecież wartością niejako jednoznaczną z racji faktu automatycznej numeracji. Odnośnie selecta z przodu, właśnie w ten sposób obecnie kod jest wykonywany. Najpierw w php sprawdzam czy istnieje, jeżeli nie to dodaje. Szukałem czy nie dało by się tego jeszcze skrócić od strony technicznej. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 171 Pomógł: 18 Dołączył: 13.03.2009 Skąd: lublin Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Jak nie chcesz insert ... on duplicate key update to może replace Cię poratuje. Tyle, że ten pierwszy jest ponoć szybszy.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 29.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Nie będę nowego tematu robić, pytanie, co może być w tej składni źle (IMG:style_emoticons/default/questionmark.gif) ?
Treść komunikatu:
Używam WEBSERVRa , ma on w sobie phpMyAdmina , w nim mogę wejść do bazy i wkleić kod sql, tyle że dostaję komunikat o złej składni, nie rozumiem dlaczego, czy serwer nie obsługuje DUPLICATE ? Mam wersję mysql 4.x , więc powinno być. Już brak mi pomysłów, sprawdziłem białe znaki itd (IMG:style_emoticons/default/sciana.gif) Plz help. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 677 Pomógł: 89 Dołączył: 31.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.09.2025 - 02:57 |