![]() |
![]() |
#1 |
Везде Бесы
Доцент
Регистрация: 21.06.2020
Сообщений: 342
Сказал(а) спасибо: 2,203
Получил(а) "Спасибо": 1,538
Нарушения: 0/0 (0)
Репутация: 1049420
|
![]()
По регурным выражениям нужно целый раздел запилить: форум обрастет тоннами низкочастотки >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? |
![]() |
![]() |
![]() |
#2 |
Думаю, что надо худеть
Академик
Регистрация: 22.06.2020
Сообщений: 1,791
Сказал(а) спасибо: 1,526
Получил(а) "Спасибо": 1,939
Нарушения: 0/0 (0)
Репутация: 632655
|
![]()
Вот тут показали как регулярки использовать:
https://se.guru/showthread.php?t=1805 Там же, человек столкнулся с замедлением серьезным в них, пробуйте у себя. Сама ваша регулярка будет такой: ^.*?$ |
![]() |
![]() |
Сказали спасибо: |
![]() |
#3 |
Слесарь-сайтосборщик
Доцент
Регистрация: 22.06.2020
Адрес: Замкадье
Сообщений: 403
Сказал(а) спасибо: 985
Получил(а) "Спасибо": 1,178
Нарушения: 0/0 (0)
Репутация: 180645
|
![]()
Я каким-то нюхом чую, что здесь проблема молотка.
|
![]() |
![]() |
![]() |
#4 |
Везде Бесы
Доцент
Регистрация: 21.06.2020
Сообщений: 342
Сказал(а) спасибо: 2,203
Получил(а) "Спасибо": 1,538
Нарушения: 0/0 (0)
Репутация: 1049420
|
![]()
Саму конструкцию уже использовал. В указанном виде работала. Добавляла название записи в новосозданное метаполе.
При подстановке ^.*?$ ругается на строку: 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 '^.*?$ |
![]() |
![]() |
![]() |
#5 |
Думаю, что надо худеть
Академик
Регистрация: 22.06.2020
Сообщений: 1,791
Сказал(а) спасибо: 1,526
Получил(а) "Спасибо": 1,939
Нарушения: 0/0 (0)
Репутация: 632655
|
![]()
wzp, топик который я дал посмотрите, вы должны использовать это выражение в REGEXP функции mysql.
|
![]() |
![]() |
3 пользователя(ей) сказали cпасибо: |
![]() |
#6 |
Дед
Профессор
Регистрация: 21.06.2020
Адрес: Ленинград
Сообщений: 517
Сказал(а) спасибо: 4,151
Получил(а) "Спасибо": 2,198
Нарушения: 0/0 (0)
Репутация: 824056
|
![]() |
![]() |
![]() |
![]() |
#7 |
Везде Бесы
Доцент
Регистрация: 21.06.2020
Сообщений: 342
Сказал(а) спасибо: 2,203
Получил(а) "Спасибо": 1,538
Нарушения: 0/0 (0)
Репутация: 1049420
|
![]() |
![]() |
![]() |
Сказали спасибо: |
![]() |
#8 |
Везде Бесы
Доцент
Регистрация: 21.06.2020
Сообщений: 342
Сказал(а) спасибо: 2,203
Получил(а) "Спасибо": 1,538
Нарушения: 0/0 (0)
Репутация: 1049420
|
![]()
Дошел до такой второй строки в запросе:
SELECT wp_posts.ID, 'pervayastroka', post_content REGEXP '^.*?$' Поля создает, но во все нули подставляет ![]() |
![]() |
![]() |
![]() |
#9 |
Думаю, что надо худеть
Академик
Регистрация: 22.06.2020
Сообщений: 1,791
Сказал(а) спасибо: 1,526
Получил(а) "Спасибо": 1,939
Нарушения: 0/0 (0)
Репутация: 632655
|
![]()
wzp, вам надо UPDATE а не select. И в нем:
UPDATE table_name SET pervayastroka = post_content REGEXP '^.*?$' WHERE ... Примерно так, но надо проверять. |
![]() |
![]() |
Сказали спасибо: |
![]() |
#10 | |
Везде Бесы
Доцент
Регистрация: 21.06.2020
Сообщений: 342
Сказал(а) спасибо: 2,203
Получил(а) "Спасибо": 1,538
Нарушения: 0/0 (0)
Репутация: 1049420
|
![]() Цитата:
Тут же ж главная проблема: 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 '^.*?$' дает вместо поста нули. Трабла где-то в синтаксисе? |
|
![]() |
![]() |