Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: update kilku komórek w mysql ?
Forum PHP.pl > Forum > Bazy danych
q-est
("update tabela set komorka1='$dfdfdf' where id='$id'") tak wygląda dla jednego rekordu a jak będzie wyglądało dla kilku?

drugie pytanie: czy te zmienne mają być w pojedyńczym cudzysłowiu?
proszę o szybką odpowiedź...
hwao
php pocz -> Bazy danych
mhs
Cytat(q-est @ 2004-07-29 14:05:48)
("update tabela set komorka1='$dfdfdf' where id='$id'")  tak wygląda dla jednego rekordu a jak będzie wyglądało dla kilku?

drugie pytanie: czy te zmienne mają być w pojedyńczym cudzysłowiu?
proszę o szybką odpowiedź...

1)
to zalezy - moze wygladac roznie:
  1. UPDATE tabela SET komorka1 = 'zmiana' WHERE id = 1 OR id 2;

lub
  1. UPDATE tabela SET komorka1 = 'zmiana' WHERE id > 1;

lub
  1. UPDATE tabela SET komorka1 = 'zmiana' WHERE id < 1000;


no i jeszcze wiele innych przypadkow tutaj mozna by rozpatrywac

2)
zobacz na ten przyklad:

  1. <?php
  2.  
  3. $this->zapytanie = '
  4. INSERT INTO
  5. publikacje (publikacja_temat, publikacja_plik)
  6. VALUES (\"'.
  7. addslashes(htmlspecialchars($temat)).'\"\"'.
  8. $this->nazwa.'\")';
  9.  
  10. ?>
aleksander
  1. UPDATE tabela SET komorka1='$wynik1', [komorka2='$wynik2' [...]] WHERE [...]
vitae
Podobne mam pytanie - dlatego pytam tutaj nie zakładając nowego tematu. Otóż mam w bazie rekordy..

Cytat
id | kat1 | kat2
1 | 1 | 1
1 | 1 | 3


I teraz problem jest taki, że chce aby rekordy z wartością kat2 = 1 zmieniły się w kat2 = 3, zaś tam gdzie kat2 = 3 rekordy mają mieć wartość kat2 = 1.

Bo sposobem:

  1. UPDATE tabela SET kat2='1' WHERE kat2='3';
  2. UPDATE tabela SET kat2='3' WHERE kat2='1'


Jak łatwo się domyślić, wszystkie rekordy będą miał wartości kat2 = 1

Jak to rozwiązać? (chyba nie pogmatwałem, bo w praktyce wygląda to dość prosto..)
tumczasty
użyłbym "wartości pomocniczej" (która w ogóle nie występuje w kolumnie kat2, np. 0):
  1. UPDATE tabela SET kat2='0' WHERE kat2='3'
  2. UPDATE tabela SET kat2='3' WHERE kat2='1'
  3. UPDATE tabela SET kat2='1' WHERE kat2='0'

albo, jeśli chodzi zawsze o liczby 1 i 3, zroziłbym "mykowca":
  1. UPDATE tabela SET kat2=4-kat2 WHERE kat2='1' OR kat2='3'
favik
Witam,
Mam podobny problem, więc już nie zakładałem nowego tematu. Chciałbym zmienić kilkaset wartości w tabeli, a dokładnie do każdej dopisać z początku i z końca określony ciąg znaków, przy czym w tabeli występują różne losowe wartości. Wyglądać to miało by tak:

ID | klucz
1 | [stała]xxxxxx[stała]
2 | [stała]vvvvvv[stała]
3 | [stała]dddddd[stała]
...
...

Próbuje to zrobić tym sposobem:
  1. UPDATE tabela SET klucz='[stała]$stary_klucz[stała]' WHERE klucz IS NOT NULL;


Czy idę dobrym tropem? Jak pobrać wartość $stary_klucz? Może zrobić to jakoś inaczej?
Zmiana będzie jednorazowa więc kod nie musi być super optymalny.
maly_swd
UPDATE tabela SET klucz=concat('[stała]', klucz, '[stała]') WHERE klucz IS NOT NULL;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.