Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Masowa zmiana wartości!
Forum PHP.pl > Forum > Bazy danych > MySQL
Pajacyk
Korzystam z PHPMyAdmin.
Chciałbym zmienić wartości rekordów jednym poleceniem.
Zamienianie ręczne odpada bo zajęłoby mi zbyt dużo czasu.
Oto jak wygląda przykładowa wartość tabel:
Kod
http://www.yyyyy.com/?http://www.xxxx.com/xxxx/xxxx

lub np.
Kod
http://www.yyyyy.com/?http://xxxx.xxxx.com/xxx.xxx?xxx=xxx&xxxx=xxx&x=xxxxxxxx

lub bez http://www.yyyyy.com/?
Kod
http://www.xxxx.com/xxxx/xxxx

Chciałbym we wszystkich tabelach/rekordach usunąć wartość http://www.yyyyy.com/? przed każdym linkiem.
Na początek trzeba sprawdzić czy w rekordzie znajduje się ten link "http://www.yyyyy.com/?", bo nie każdy rekord go zawiera.
Jednak w tych rekordach, w których znajduje się link to chciałbym aby został usunięty.
Chciałbym aby każdy rekord posiadał link bez "http://www.yyyyy.com/?" (czyli usunąć ten link z tych rekordów co go mają lub pominąć te w których tego linku nie ma) smile.gif
Przykładowo
Program działa i naotyka na rekord z takim wpisem
Kod
http://www.yyyyy.com/?http://www.xxxx.com/xxxx/xxxx

Więc usuwa z niego "http://www.yyyyy.com/?" i zostaje:
Kod
http://www.xxxx.com/xxxx/xxxx

lub program napotyka na rekord z taką zawartością:
Kod
http://www.xxxx.com/xxxx/xxxx

Jak widać tutaj nie ma linku "http://www.yyyyy.com/?". Więc tu nic nie robi.
Proszę o pomoc.
werdan
  1. UPDATE TABLE SET fieldname=REPLACE(fieldname,'APS','')


Poprobuj z takim rozwiazaniem. Oczywiście ten przykład musisz dostosować do budowy swojej bazy.
Pajacyk
To na pewno zadziala?
Linki http://http://www.xxxx.com/xxxx/xxxx różnią się od siebie, nie są takie same.
Tu chodzi o usunięcie określonego tekstu (if jest) z rekordu.
Linki http://www.yyyyy.com/? zawsze są takie same.
Jak dajecie kod to proszę o wyjaśnienie gdzie co wstawić.
Dzięki za odpowiedź.
maly_swd
Kolega Werdan, dał Ci na tacy rozwiązanie. Zobacz w dokumentacji co to robi i później zadaj pytania.

Powiem Ci, że to co dostałeś rozwiąże Twój problem.
Pajacyk
Kod
UPDATE TABLE SET fieldname=REPLACE(fieldname,'APS','')

Rozumiem, że w powyższym kodzie wystarczy zastąpić poniższe zmienne?
fieldname = nazwa tabeli?
APS = http://www.yyyyy.com/?
Czy to zapytanie zaktualizuje wszystkie rekordy?
W tabeli jest prawie 9000 rekordów.

Moje zapytanie wygląda tak:
Kod
UPDATE TABLE SET LinkToVideo=REPLACE(LinkToVideo,'http://www.blankrefer.com/?','')


Dodajcie odpowiedź.
mar1aczi
Jak pisał już wcześniej maly_swd - najpierw zajrzyj do dokumentacji:
1. update
2. replace
i przeczytaj ze zrozumieniem, i dopiero wtedy pytaj.
werdan
Pajacyk, zrob sobie kopie swojej bazy i testuj. Tak najlepiej.
Pajacyk
Cytat
Jak pisał już wcześniej maly_swd - najpierw zajrzyj do dokumentacji:
1. update
2. replace
i przeczytaj ze zrozumieniem, i dopiero wtedy pytaj.

Nie dzięki, wolę popytać na forum. smile.gif

Po wykonaniu zapytania, wypluło błąd:
Kod
zapytanie SQL:

UPDATE TABLE SET LinkToVideo = REPLACE (
LinkToVideo,
'http://www.blankrefer.com/?',
''
)

MySQL zwrócił komunikat: Dokumentacja
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TABLE SET LinkToVideo=REPLACE(LinkToVideo,'http://www.blankrefer.com/?','')' at line 1
mmmmmmm
Serio nazwałeś tabelę TABLE? smile.gif Trzeba mieć fantazję, dziadku...
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.