Форум об интернет-маркетинге
Вернуться   Форум об интернет-маркетинге > Технические вопросы > Веб-строительство

Ответ
 
Опции темы
Старый 14.07.2020, 23:46   #1
sanek1991
Senior Member
Профессор
 
Регистрация: 21.06.2020
Сообщений: 859
Сказал(а) спасибо: 80
Получил(а) "Спасибо": 187
Нарушения: 0/0 (0)
Репутация: 74780

Thread Starter Помогите с SQL запросом replace

В базе у меня есть таблица с полями: title и message

В message есть записи вывода картинки:
[ATTACH type="full"]12345[/ATTACH]

Мне нужно в эту запись массово добавить alt со значением из поля title, что-бы получить такой формат картинки:
[ATTACH alt="title + фото" type="full"]12345[/ATTACH]
sanek1991 вне форума   Ответить с цитированием
Старый 14.07.2020, 23:50   #2
ziliboba0213
Позитив =)
Академик
 
Аватар для ziliboba0213
 
Регистрация: 21.06.2020
Адрес: Санкт-Петербург
Сообщений: 4,367
Сказал(а) спасибо: 24,649
Получил(а) "Спасибо": 13,457
Нарушения: 0/0 (0)
Репутация: 1158348

По умолчанию Re: Помогите с SQL запросом replace

Это вам надо смотреть как bbcode преобразуется...

А массовая замена в поле mysql это так:
PHP код:
UPDATE table SET field REPLACE(field'что_заменить''чем_заменить'); 
ziliboba0213 вне форума   Ответить с цитированием
Старый 14.07.2020, 23:55   #3
sanek1991
Senior Member
Профессор
 
Регистрация: 21.06.2020
Сообщений: 859
Сказал(а) спасибо: 80
Получил(а) "Спасибо": 187
Нарушения: 0/0 (0)
Репутация: 74780

Thread Starter Re: Помогите с SQL запросом replace

ziliboba0213, это при простом replace
а мне нужно использовать значение из поля title

Я почитал доки, пишут что в таких случаях нужно использовать concat, но MySQL еще не изучал
sanek1991 вне форума   Ответить с цитированием
Старый 15.07.2020, 00:00   #4
ziliboba0213
Позитив =)
Академик
 
Аватар для ziliboba0213
 
Регистрация: 21.06.2020
Адрес: Санкт-Петербург
Сообщений: 4,367
Сказал(а) спасибо: 24,649
Получил(а) "Спасибо": 13,457
Нарушения: 0/0 (0)
Репутация: 1158348

По умолчанию Re: Помогите с SQL запросом replace

Цитата:
Сообщение от sanek1991 Посмотреть сообщение
ziliboba0213, это при простом replace
а мне нужно использовать значение из поля title

Я почитал доки, пишут что в таких случаях нужно использовать concat, но MySQL еще не изучал
Так title в той же таблице? А понял, не в той... Может через php проще будет перебрать тогда?
ziliboba0213 вне форума   Ответить с цитированием
Старый 15.07.2020, 00:02   #5
sanek1991
Senior Member
Профессор
 
Регистрация: 21.06.2020
Сообщений: 859
Сказал(а) спасибо: 80
Получил(а) "Спасибо": 187
Нарушения: 0/0 (0)
Репутация: 74780

Thread Starter Re: Помогите с SQL запросом replace

Цитата:
Сообщение от ziliboba0213 Посмотреть сообщение
Так title в той же таблице? А понял, не в той... Может через php проще будет перебрать тогда?
хотя-бы когда title в той-же таблице
sanek1991 вне форума   Ответить с цитированием
Старый 15.07.2020, 00:10   #6
ziliboba0213
Позитив =)
Академик
 
Аватар для ziliboba0213
 
Регистрация: 21.06.2020
Адрес: Санкт-Петербург
Сообщений: 4,367
Сказал(а) спасибо: 24,649
Получил(а) "Спасибо": 13,457
Нарушения: 0/0 (0)
Репутация: 1158348

По умолчанию Re: Помогите с SQL запросом replace

Цитата:
Сообщение от sanek1991 Посмотреть сообщение
хотя-бы когда title в той-же таблице
Я в этом нубас, я бы через PHP сделал через mysql UPDATE
ziliboba0213 вне форума   Ответить с цитированием
Старый 15.07.2020, 00:22   #7
sanek1991
Senior Member
Профессор
 
Регистрация: 21.06.2020
Сообщений: 859
Сказал(а) спасибо: 80
Получил(а) "Спасибо": 187
Нарушения: 0/0 (0)
Репутация: 74780

Thread Starter Re: Помогите с SQL запросом replace

MySQL позволяет использовать значения другого поля.
Нашел в инете, но нифига не понял

Цитата:
И если вы хотите искать и заменять на основе значения другого поля, вы можете сделать CONCAT:

update table_name set `field_name` = replace(`field_name`,'YOUR_OLD_STRING',CONCAT('NEW _STRING',`OTHER_FIELD_VALUE`,'AFTER_IF_NEEDED'));
Мне нужно просто в поле message добавить alt к картинкам, а значение взять из поля title
sanek1991 вне форума   Ответить с цитированием
Старый 15.07.2020, 00:56   #8
дани мапов
Junior Member
Студент
 
Регистрация: 12.07.2020
Сообщений: 11
Сказал(а) спасибо: 4
Получил(а) "Спасибо": 4
Нарушения: 0/0 (0)
Репутация: 5595

По умолчанию Re: Помогите с SQL запросом replace

UPDATE table SET message = REPLACE (message, '[ATTACH', CONCAT('[ATTACH alt="', title, ' + фото"'));
дани мапов вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Старый 15.07.2020, 01:27   #9
sanek1991
Senior Member
Профессор
 
Регистрация: 21.06.2020
Сообщений: 859
Сказал(а) спасибо: 80
Получил(а) "Спасибо": 187
Нарушения: 0/0 (0)
Репутация: 74780

Thread Starter Re: Помогите с SQL запросом replace

дани мапов, Спасибо, проверил - работает !

У меня еще есть картинки в других таблицах, но там уже наверное через PHP скрипт позже сделаю.
sanek1991 вне форума   Ответить с цитированием
Старый 15.07.2020, 16:07   #10
sanek1991
Senior Member
Профессор
 
Регистрация: 21.06.2020
Сообщений: 859
Сказал(а) спасибо: 80
Получил(а) "Спасибо": 187
Нарушения: 0/0 (0)
Репутация: 74780

Thread Starter Re: Помогите с SQL запросом replace

В этом запросе столкнулся с некоторой проблемой.
UPDATE table SET message = REPLACE (message, '[ATTACH', CONCAT('[ATTACH alt="', title, ' + фото"'));

Поле title может содержать кавычки
Если например в title будет такое:
Форум "SEO"

То результат replacе будет такой:
alt="Форум "SEO" + фото"

Что естественно приводит неправильному формированию alt у картинок.
Как-бы вырезать эти кавычки ?
sanek1991 вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 01:35. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc. Перевод: zCarot