@thedexploit
Сайтами маюсь

Как через BD добавить символ сразу во все названия статей (при учете того, что все названия содержат одинаковое слово)?

Доброго времени суток!

Столкнулся с задачкой после наполнения каталога.
Есть 110 статей (это сайт каталог, просто объекты расположены в статьях).
Названия имеют следующего характера:
  1. Объект 1
  2. Объект 2
  3. Объект 3

И так до 110)))
Нужно добавить знак № перед цифрой. Например, вот так:
  1. Объект №1
  2. Объект №2
  3. Объект №3

Возникла идея каким-то образом сделать замену текста в таблицах BD.
Выполнить поиск по "Объект " и заменить на "Объект №". Но вот как именно это сделать не знаю. Может кто подсказать?
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
update wp_posts set post_title = replace(post_title, 'Объект ', 'Объект №');
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@maksim_fix
Junior PHP developer
Ну, Select * from <таблица>. Потом подсчитываем кол-во записей(ну, 110). Затем:
for($i =1, $i<111, $i++){
    UPDATE posts set name =  'Объект #'.$i Where id = $i;
}
Ответ написан
Immortal_pony
@Immortal_pony Куратор тега MySQL
Если в названии объеетов нет пробелов, то так:
UPDATE
	`wp_posts`
SET
	`post_title` = CONCAT(
		LEFT(post_title, LOCATE(' ', post_title)-1), 
		' №',
		SUBSTR(post_title, LOCATE(' ', post_title))
	)
WHERE
	`post_type`='post'
ORDER BY
	`post_date`


Если пробелы есть, то запрос составить можно, но вручную будет исправить гораздо быстрее.
Ответ написан
Комментировать
Примерно так на тестовой базе получилось
use test;
set @pos:=0;
update test set title=replace(title, 'Объект', CONCAT('Объект №', @pos:=@pos+1)), modified=NOW() where title like '%Объект%' order by created desc;
select * from test where title like '%Объект%' order by modified desc;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы