вопрос по MYSQL

12
W
На сайте с 29.08.2009
Offline
97
1356

Можно ли составить запрос, что бы изменить по базе mysql (около 1000 записей) ".html" на ".html?id=71" ? (это в постах в wp).

забыл на нескольких сайтах дописать партнерский ид ;-) руками переправлять не вариант, можно скачать базу на комп, на компе ее в блокноте отредактить и закачать, но база больше 2МБ, а в пхпмайадмине стоит ограничение на загрузку базы не более 2Мб. Вот подумал, может как-то можно запрос составить, что бы сразу по всей базе поменял?

hondacb
На сайте с 09.05.2008
Offline
42
#1
weboeb:
".html" на ".html?id=71"

формат поля поподробнее надо бы. а так копай в сторону UPDATE example SET extension='.html?id=71' WHERE extension='.html'

malls
На сайте с 08.08.2005
Offline
255
#2

как то так:

UPDATE table SET field+='?id=71'

xinen
На сайте с 03.02.2010
Offline
4
#3

ТС, чуть более подробно можете рассказать? С названием полей и таблиц. Так легче код будет построить для вас.

Пишу PHP-скрипты любой сложности, недорого! (/ru/forum/456209) DLE — "под ключ", создание модулей, установка шаблонов, парсеры и мн. другое. (/ru/forum/462426)
dema501
На сайте с 03.03.2003
Offline
64
#4

мой вариант

UPDATE table SET field=replace(field, 'html', 'html?id=71') WHERE field LIKE '%html%'

dema501 добавил 17.02.2010 в 01:01

мой вариант

UPDATE table SET field=replace(field, 'html', 'html?id=71') WHERE field LIKE '%html%'

W
На сайте с 29.08.2009
Offline
97
#5

Спасибо за ответы :)

подробнее: значит есть база base128, в ней таблицы wp_comments wp_links wp_options wp_postmeta wp_posts wp_terms wp_term_relationships wp_term_taxonomy wp_usermeta wp_users, среди них имеется таблица с наванием wp_posts в которой 1000 записей.

в таблице есть столбцы с названиями(в списке ниже разделенные табом)

ID post_author post_date post_date_gmt post_content post_title post_excerpt post_status comment_status ping_status post_password post_name to_ping pinged post_modified post_modified_gmt post_content_filtered post_parent guid menu_order post_type post_mime_type comment_count.

Нужный нам столбец post_content типа longtext в котором и находятся посты в виде:

текст <img src="/images/496.jpg" alt="картинка" onclick="javascript:window.location='http://mysite.ru/10238/496.html';"><br> текст текст

Вот нужно .html заменить во всех постах на .html?id=71

malls
На сайте с 08.08.2005
Offline
255
#6

жесть...

1. "Сложный" метод "путь PHP самурая"

мускуль в запросах не умеет регулярки юзать, токма replace, если его недостаточно то только путь самурая:

запрос на выборку (SELECT) -> замена регуляркой в PHP -> запрос на запись (UPDATE)

выручает только то что задача как я понимаю одноразовая, 1000 записей - на раз плюнуть делается.

Скрипт тоже из 10 строк...

2. Простой путь, для "MySQL advanced user"

вариант dema501 хорош, если в тексте не встречается больше никаких html, хотя конечно можно поиграть блоками...

3. Путь дзен (внесистемный подход "for Notepad++ & etc. owners")

делаем дамп таблицы в текстовый файл - меняем чего угодно, заливаем обновленный дамп

ЗЫ: если прийдут атцы могут еще чего насоветовать :)

ЗЫЗЫ: Для явления атцов - молитесь Онотоле.

Qinghua
На сайте с 01.09.2009
Offline
103
#7
malls:
вариант dema501 хорош, если в тексте не встречается больше никаких html, хотя конечно можно поиграть блоками...

в смысле "блоками"? Можно как-то кусок текста извлекать/сохранять?

malls
На сайте с 08.08.2005
Offline
255
#8
Qinghua:
в смысле "блоками"? Можно как-то кусок текста извлекать/сохранять?

Вам - нет! Тем кто внимательнее читает топик - можно!

Qinghua
На сайте с 01.09.2009
Offline
103
#9

по сабжу:

UPDATE table SET field=replace(field, '.html\';">', 'html?id=71\';">')

(можно еще c <br>, чтобы наверняка)

W
На сайте с 29.08.2009
Offline
97
#10

#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 field = replace(field, '.html\'', '.html?id=71\'')' at line 1

ругается что-то ;(

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий