Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czyszczenie kolumny
loocek
post 21.12.2015, 11:15:49
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 18.04.2009

Ostrzeżenie: (0%)
-----


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

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Crozin
post 21.12.2015, 11:23:38
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Skoro zmieniasz jedynie wartości istniejących wierszy oraz dodaje nowe dlaczego dziwi Cię, że w tabeli pojawiają się nowe wiersze?
Go to the top of the page
+Quote Post
Pyton_000
post 21.12.2015, 11:25:44
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
loocek
post 21.12.2015, 11:29:04
Post #4





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 18.04.2009

Ostrzeżenie: (0%)
-----


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...

Go to the top of the page
+Quote Post
viking
post 21.12.2015, 11:33:41
Post #5





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Zależy co chcesz osiągnąć:
https://dev.mysql.com/doc/refman/5.0/en/truncate-table.html
http://dev.mysql.com/doc/refman/5.7/en/delete.html
http://dev.mysql.com/doc/refman/5.7/en/replace.html


--------------------
Go to the top of the page
+Quote Post
loocek
post 21.12.2015, 12:07:19
Post #6





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 18.04.2009

Ostrzeżenie: (0%)
-----


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ł


Go to the top of the page
+Quote Post
viking
post 21.12.2015, 12:30:09
Post #7





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


  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

Ten post edytował viking 21.12.2015, 12:30:59


--------------------
Go to the top of the page
+Quote Post
loocek
post 21.12.2015, 21:09:12
Post #8





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 18.04.2009

Ostrzeżenie: (0%)
-----


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

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 22.06.2025 - 20:11