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

Ответ
 
Опции темы
Старый 22.12.2020, 00:33   #1
wzp
Везде Бесы
Доцент
 
Аватар для wzp
 
Регистрация: 21.06.2020
Сообщений: 338
Сказал(а) спасибо: 2,152
Получил(а) "Спасибо": 1,521
Нарушения: 0/0 (0)
Репутация: 872669

Thread Starter Регулярка: подставить в произвольное поле первую строку

По регурным выражениям нужно целый раздел запилить: форум обрастет тоннами низкочастотки >8)

В чем боль:
В вордпрессе для выборки записей нужно создать произвольные поля и скопировать в них первую строку из соответствующих post_content.

Вот таким запросом создаю поля и подставляю в них, например, заголовок записи:
INSERT INTO wp_postmeta( post_id, meta_key, meta_value )
SELECT wp_posts.ID, 'nazvanieproizvpolya', post_title
FROM wp_posts
WHERE wp_posts.post_status = 'publish'
AND wp_posts.post_type = 'post'
AND wp_posts.post_title LIKE '%Кусок текста для отбора записей%'

Собственно: как изменить запрос, чтобы в это произвольное поле записать значение первой строки из post_content?
wzp вне форума   Ответить с цитированием
Старый 22.12.2020, 14:38   #2
XPraptor
Думаю, что надо худеть
Академик
 
Аватар для XPraptor
 
Регистрация: 22.06.2020
Сообщений: 1,791
Сказал(а) спасибо: 1,526
Получил(а) "Спасибо": 1,939
Нарушения: 0/0 (0)
Репутация: 608321

По умолчанию Re: Регулярка: подставить в произвольное поле первую строку

Вот тут показали как регулярки использовать:
https://se.guru/showthread.php?t=1805

Там же, человек столкнулся с замедлением серьезным в них, пробуйте у себя.
Сама ваша регулярка будет такой:
^.*?$
Состояние бота google и полезные ресурсы: всё про гугл
XPraptor вне форума   Ответить с цитированием
Сказали спасибо:
wzp
Старый 22.12.2020, 15:22   #3
Sitealert
Слесарь-сайтосборщик
Доцент
 
Регистрация: 22.06.2020
Адрес: Замкадье
Сообщений: 403
Сказал(а) спасибо: 985
Получил(а) "Спасибо": 1,178
Нарушения: 0/0 (0)
Репутация: 180645

По умолчанию Re: Регулярка: подставить в произвольное поле первую строку

Я каким-то нюхом чую, что здесь проблема молотка.
Sitealert вне форума   Ответить с цитированием
Старый 22.12.2020, 15:40   #4
wzp
Везде Бесы
Доцент
 
Аватар для wzp
 
Регистрация: 21.06.2020
Сообщений: 338
Сказал(а) спасибо: 2,152
Получил(а) "Спасибо": 1,521
Нарушения: 0/0 (0)
Репутация: 872669

Thread Starter Re: Регулярка: подставить в произвольное поле первую строку

Саму конструкцию уже использовал. В указанном виде работала. Добавляла название записи в новосозданное метаполе.

При подстановке ^.*?$ ругается на строку:
SELECT wp_posts.ID, 'nazvanieproizvpolya', ^.*?$

Может, не заковычил что-нибудь?

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '^.*?$
wzp вне форума   Ответить с цитированием
Старый 22.12.2020, 18:19   #5
XPraptor
Думаю, что надо худеть
Академик
 
Аватар для XPraptor
 
Регистрация: 22.06.2020
Сообщений: 1,791
Сказал(а) спасибо: 1,526
Получил(а) "Спасибо": 1,939
Нарушения: 0/0 (0)
Репутация: 608321

По умолчанию Re: Регулярка: подставить в произвольное поле первую строку

wzp, топик который я дал посмотрите, вы должны использовать это выражение в REGEXP функции mysql.
XPraptor вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
Старый 22.12.2020, 19:15   #6
Alex Klo
Дед
Профессор
 
Аватар для Alex Klo
 
Регистрация: 21.06.2020
Адрес: Ленинград
Сообщений: 514
Сказал(а) спасибо: 3,849
Получил(а) "Спасибо": 2,088
Нарушения: 0/0 (0)
Репутация: 746638

По умолчанию Re: Регулярка: подставить в произвольное поле первую строку

Цитата:
Сообщение от wzp Посмотреть сообщение
SELECT wp_posts.ID, 'nazvanieproizvpolya', ^.*?$
я в шоке!.... даже не закавычил...
Alex Klo вне форума   Ответить с цитированием
Старый 23.12.2020, 02:12   #7
wzp
Везде Бесы
Доцент
 
Аватар для wzp
 
Регистрация: 21.06.2020
Сообщений: 338
Сказал(а) спасибо: 2,152
Получил(а) "Спасибо": 1,521
Нарушения: 0/0 (0)
Репутация: 872669

Thread Starter Re: Регулярка: подставить в произвольное поле первую строку

Цитата:
Сообщение от Alex Klo Посмотреть сообщение
я в шоке!.... даже не закавычил...
Так заковычишь, получишь эту кракозябру в соответствующем поле в ее первозданном виде
wzp вне форума   Ответить с цитированием
Сказали спасибо:
Старый 23.12.2020, 03:06   #8
wzp
Везде Бесы
Доцент
 
Аватар для wzp
 
Регистрация: 21.06.2020
Сообщений: 338
Сказал(а) спасибо: 2,152
Получил(а) "Спасибо": 1,521
Нарушения: 0/0 (0)
Репутация: 872669

Thread Starter Re: Регулярка: подставить в произвольное поле первую строку

Дошел до такой второй строки в запросе:
SELECT wp_posts.ID, 'pervayastroka', post_content REGEXP '^.*?$'

Поля создает, но во все нули подставляет
wzp вне форума   Ответить с цитированием
Старый 23.12.2020, 13:39   #9
XPraptor
Думаю, что надо худеть
Академик
 
Аватар для XPraptor
 
Регистрация: 22.06.2020
Сообщений: 1,791
Сказал(а) спасибо: 1,526
Получил(а) "Спасибо": 1,939
Нарушения: 0/0 (0)
Репутация: 608321

По умолчанию Re: Регулярка: подставить в произвольное поле первую строку

wzp, вам надо UPDATE а не select. И в нем:
UPDATE table_name SET pervayastroka = post_content REGEXP '^.*?$' WHERE ...
Примерно так, но надо проверять.
XPraptor вне форума   Ответить с цитированием
Сказали спасибо:
wzp
Старый 24.12.2020, 01:51   #10
wzp
Везде Бесы
Доцент
 
Аватар для wzp
 
Регистрация: 21.06.2020
Сообщений: 338
Сказал(а) спасибо: 2,152
Получил(а) "Спасибо": 1,521
Нарушения: 0/0 (0)
Репутация: 872669

Thread Starter Re: Регулярка: подставить в произвольное поле первую строку

Цитата:
Сообщение от XPraptor Посмотреть сообщение
wzp, вам надо UPDATE а не select. И в нем:
UPDATE table_name SET pervayastroka = post_content REGEXP '^.*?$' WHERE ...
Примерно так, но надо проверять.
UPDATE это когда ячейка есть. Изначально я их создаю и сразу пытаюсь сунуть им нужное значение.

Тут же ж главная проблема:
post_content в таблице wp_posts,
а meta_key, meta_value в таблице wp_postmeta.
Вот эта вот штука wp_posts.ID в запросе, как я понимаю, их связывает.

Вот запрос без регулярки, который подставляет туда куда нужно весь пост целиком:
INSERT INTO wp_postmeta( post_id, meta_key, meta_value )
SELECT wp_posts.ID, 'pervayastroka', post_content
FROM wp_posts
WHERE wp_posts.post_status = 'publish'
AND wp_posts.post_type = 'post'
AND wp_posts.post_title LIKE '%Кусок текста для отбора записей%'

Замена post_content на post_content REGEXP '^.*?$' дает вместо поста нули. Трабла где-то в синтаксисе?
wzp вне форума   Ответить с цитированием
Ответ


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

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

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


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


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