webForumDet fria alternativet

Byta ut ord i mysql

10 svar · 484 visningar · startad av Kvarner

KvarnerMedlem sedan sep. 2004180 inlägg
#1

Undrar om det med något kommando går att byta ut ett särskilt ord eller länk i databasen med ett annat istället för att manuellt sitta och byta ut orden i ett forum.

T ex att pelle.mine.nu blir pelle.nu trots att länken kan vara längre, t ex pelle.mine.nu/pellesbild.jpg

Mvh

Peter SMedlem sedan dec. 20025 483 inlägg
#2

Replace(myDbFieldName, 'pelle.mine.nu', 'pelle.nu')

Sedan finns visst stöd regexp också, beroende på version av MySQL. Men du kanske klarar dig med Replace().

KvarnerMedlem sedan sep. 2004180 inlägg
#3

Tack för ett snabbt svar! Jag fick dock ett felmeddelande. Antar att mydbfieldname ska bytas ut mot något? Vet inte vad.

Mvh

Peter SMedlem sedan dec. 20025 483 inlägg
#4

Namnet på den kolumn i databasen som innehåller texten :)

KvarnerMedlem sedan sep. 2004180 inlägg
#5

Får felmeddelande...

SQL-fråga:

Replace( phpbb3_posts, 'pelle.mine.nu', 'pelle.nu' )

MySQL sa:

#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 '(phpbb3_posts, 'pelle.mine.nu', 'pelle.nu')' at line 1

Dessutom när jag söker på pelle.mine.nu så får jag ingen träff i mysql search, bara när jag söker på pelle. Hmm.

Peter SMedlem sedan dec. 20025 483 inlägg
#6

Replace() skall köras i en UPDATE - gör du det?

update tbl set phpbb3_posts = replace(...) where ...
KvarnerMedlem sedan sep. 2004180 inlägg
#7

Nej. Peter S, mina mysql-kunskaper är inte de bästa. Behövs nog nybörjarspråk här. Beklagar att jag inte var tydligare från början. Din hjälp uppskattas mycket.

Peter SMedlem sedan dec. 20025 483 inlägg
#8

Sorry :)

Rådet är alltså att använda en UPDATE och i den köra Replace() enligt ovan. Skall ersättningen inte göras på alla rader i tabellen måste du ange ett villkor i WHERE (där jag skrivit "..."). Vill du ersätta alla förekomster på samtliga rader kan du ta bort WHERE.

KvarnerMedlem sedan sep. 2004180 inlägg
#9

Peter, jag försökte med...

update phpbb3_posts SET `post_id` = replace (`post_id`, "pelle.mine.nu", "pelle.nu")

...och kommandot genomfördes framgångsrikt utan felmeddelanden, men med 0 träff. Av någon anledning hittas inte ordet pelle.mine.nu, inte ens när jag söker i phpmyadmin. Kanske för att det är en del av en länk?

Jag är ytterst tacksam för att du tagit dig tid att svara på mina inlägg. :-)

SPiNMedlem sedan mars 20007 896 inlägg
#10

Du pekar mot fel kolumn i tabellen. post_id är antagligen en index-räknare, med heltalsvärden. Du får byta ut kolumnen mot den som informationen är sparad i (i mitt exempel heter den post_content);

UPDATE
    phpbb3_posts
SET
    `[b]post_content[/b]` = REPLACE(`[b]post_content[/b]`, 'pelle.mine.nu', 'pelle.nu')
KvarnerMedlem sedan sep. 2004180 inlägg
#11

Stort tack, det fungerade galant! Anledningen till att jag inte hittade pelle.mine.nu i mysql är för att det visas som 'pelle.mine.nu'. Fråga mig inte varför. Upptäckte det av en slump. Det hela löstes med följande kommando...

UPDATE phpbb3_posts SET `post_text` = REPLACE( `post_text` , 'pelle.mine.nu', 'pelle.nu' )

Tack, ni har verkligen varit supertrevliga och kunniga.

122 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
120 ms — hämta tråd, inlägg och bilagor (db)