Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] update i replace z tablicy
malin90
post
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 5.01.2009

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


Witam,
mam problem ze zmianą znaków w rekordzie, który składa się 8 cyfr, używam funkcji "replace" a znaki jakie mają być zmienione, dla większej czytelności
chciałem umieścić w tablicy, kod wygląda następująco:

  1. $z = array('1','2','3','4','5','6','7','8');
  2. $na = array('8','7','6','5','4','3','2','1');
  3. mysql_query("UPDATE `tabela` SET `data` = REPLACE(`data`,'$z','$na')");


Póki nie chcę pobierać danych z tablicy wszystko działa, tzn. prawie bo nie wiem jak zażądać zmiany więcej niż jednej cyfry np:
  1. mysql_query("UPDATE `tabela` SET `data` = REPLACE(`data`,'1','2')");

po tym zamienia wszystkie "jedynki" w ciągu liczbowym na "dwójki" a ja muszę pozamieniać jeszcze 7 pozostałych cyfr...

Pewnie zrobiłem gdzieś jakiś banalny błąd, kombinuję na wszystkie sposoby ale nic nie wychodzi, dopiero raczkuję w php (IMG:style_emoticons/default/smile.gif)
Uprzejmie proszę o pomoc i pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
d3ut3r
post
Post #2





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


Nie wiem jak z wydajnością ale możesz zagnieździć REPLACE np:

  1. UPDATE dane SET kolumna=REPLACE(REPLACE(REPLACE(kolumna,'1','8'),'2','7'),'3','6');


Go to the top of the page
+Quote Post
malin90
post
Post #3





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 5.01.2009

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


Sytuacja bez wyjścia stała się stała się teraz sytuacją z dwoma rozwiązaniami (IMG:style_emoticons/default/smile.gif)
Teraz mam dylemat, które rozwiązanie będzie wydajniejsze...

Sposób który podał ~tolomei na wywołanie replace pojedynczo dla każdej zmiany,
czy zapis jaki przedstawił ~d3ut3r, zastrzegłeś jednak, że nie wiadomo jak z wydajnością...

Skłaniam się ku ostatniej opcji... mam słuszność ?

EDIT

Pojawił się następny problemik (IMG:style_emoticons/default/smile.gif)

Sprawdzając działanie przykładowego kodu:
  1. mysql_query("UPDATE `tabela` SET `data` = REPLACE(REPLACE(`data`,'2','1'),'1','3')");


natknąłem się na problem którego nie przewidziałem...
chciałem to tak zorganizować aby kod przeszukując rekord i znajdując cyfrę "2" zamienił ją na "1" i dalej znajdując "1" zamienił ją na "3".
Niestety jak się pewnie domyślacie, zamiana "1" na "3" powoduje, że w efekcie wcześniejsza zamiana "2" na "1" przestaje istnieć i na miejscu "2" pojawia się "3".

Czy da się to zrobić tak aby kod przeszukiwał rekord tylko jeden raz ? jeśli tak to jak to zrobić (IMG:style_emoticons/default/questionmark.gif)

naprawdę nikt nie wie (IMG:style_emoticons/default/questionmark.gif)

Ten post edytował malin90 30.03.2012, 21:25:04
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 19:19