Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czyszczenie kolumny
Forum PHP.pl > Forum > Bazy danych > MySQL
loocek
Hej,

Coś nie radzę sobie z tym tematem. Do rzeczy.. mam taką prostę tabelkę "firewall":
+-----------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+----------------+
| nr | int(11) | NO | PRI | NULL | auto_increment |
| temporary | varchar(1000) | YES | | NULL | |
| full | varchar(1000) | YES | | NULL | |
+-----------+---------------+------+-----+---------+----------------+

Chcę wyczyścić kolumnę temporary. Daje polecenie:
update firewall set temporary='';

No i niby wpisuje mi puste pola w rekordy ALE potem gdy chcę wpisać do tej kolumny znowu jakieś nowe rekordy poleceniem:
INSERT INTO $TABLE ($COLUMN) VALUES (?);
to niestety ale te nowe rekordy rosną za każdym razem, tzn. nie wpisują się od początku kolumny a zaczynają na końcu i jadą dalej. Efekt jest taki że po każdym wyczysczeniu kolumny i wpisaniu tych samych 300-u rekordów moja tabela puchnie o 300 kolejne a początek kolumny jest pusty i coraz bardziej pusty.

Jak zrobić żeby nowe rekordy wpisywały się od początku do tej kolumny ?

pozdro all

Crozin
Skoro zmieniasz jedynie wartości istniejących wierszy oraz dodaje nowe dlaczego dziwi Cię, że w tabeli pojawiają się nowe wiersze?
Pyton_000
No skoro ustawiasz pustą wartość dla kolumny a potem chcesz dodać nowe dane to logicznym jest że dodadzą się kolejne wiersze.

Ty pewnie potrezbujesz usunąć stare dane i wrzucić nowe.
loocek
Dokładnie, potrzebuję usunąć stare i na to miejsce wpisać nowe, jak to w końcu zrobić gdyż UPDATEm tez mi to nie działa...

loocek
Tak jak pisałem, potrzebuję usunąć wszystkie dane z kolumny i następnie od początku wpisać nowe.

Sorry ale z manuali nie idzie tego wyczytać, inaczej bym tu głowy nie zawracał


viking
  1. UPDATE firewall SET TEMPORARY=DEFAULT;
  2. UPDATE firewall SET TEMPORARY=jakaś wartość WHERE nr=liczba


Tylko "czyszczenie" nie ma sensu jeżeli zaraz robisz update z wartością.

Do tego temporary jest słowem zastrzezonym http://dev.mysql.com/doc/refman/5.7/en/keywords.html
loocek
No i pomogłeś smile.gif

Czyszczenie jest potrzebne bo jeżeli nowe dane są krótsze to te dalsze rekordy zostaną.

W każdym razie (dla potomnych) zrobiłem tak:
UPDATE $TABLE SET $COLUMN=NULL
i potem w pętli for (po długości pliku z którego wczytuję tekst):
UPDATE $TABLE SET $COLUMN=$baza[$i] WHERE nr='$a'
gdzie:
$a=$i+1; (trzeba to zrobić gdyż tabela z danymi z pliku jest indeksowana od 0, a rekordy w tabeli są od 1)
$i - to zmienna iteracyjna

pozdro all

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.