![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
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?
|
|
|
![]()
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. |
|
|
![]()
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...
|
|
|
![]()
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 -------------------- |
|
|
![]()
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ł |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
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 -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 18.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
No i pomogłeś
![]() 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 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 22.06.2025 - 20:11 |