MySql и Wordpress синтаксис запросов - PullRequest
0 голосов
/ 01 сентября 2009

Я пытаюсь изучить запросы MySQL для использования с Wordpress ....

Что я знаю, так это этот запрос, который дает всем экземплярам настраиваемого поля «описание» значение «test», если поле имеет значение NULL

UPDATE `wp_postmeta` SET `meta_value` = 'test' WHERE `meta_key` LIKE 'description' and `meta_value` is null

Что мне нужно сделать, это изменить это, чтобы я мог написать в категорию; категории хранятся в wp_term, like this: WHERE term_id = '3'

Но это приводит к синтаксической ошибке:

UPDATE `wp_postmeta` SET `meta_value` = 'test' WHERE `meta_key` LIKE 'description' and `meta_value` is null WHERE term_id = '3'

Так что я делаю что-то не так; Я думаю, что синтаксис, связанный с категориями, намного сложнее, чем тегирование в другом «ГДЕ».

Ответы [ 4 ]

2 голосов
/ 01 сентября 2009

Вы не должны запрашивать SQL напрямую. В WordPress встроен слой абстракции.

Вы должны использовать функцию wp_query:

http://codex.wordpress.org/Function_Reference/WP_Query

1 голос
/ 02 сентября 2009

Это с моей головы. Для обновления категории вы хотите использовать wp_update_term

wp_update_term(3,'category',array(
    'name' => 'new name',
    'description' => 'new description'
));

Вам не нужно включать имя и описание, просто включите то, что меняется. wp_update_term объединит эти новые данные со старыми, так что только то, что вы дадите, будет изменено.

Теперь, когда я снова прочитал пост, я не уверен, что это ответит на него. Я не могу честно сказать, какова цель вашего SQL ...

1 голос
/ 01 сентября 2009

Это может быть и так?

ОБНОВЛЕНИЕ wp_postmeta SET meta_value = 'test' ГДЕ meta_key НРАВИТСЯ 'description' и meta_value равно нулю AND term_id = '3'

По моему у меня тоже проблемы с `; 1011 *

есть также функция update_post_meta (), которую вы должны изучить

http://codex.wordpress.org/Function_Reference/update_post_meta

0 голосов
/ 01 сентября 2009

Учитывая, что вы должны использовать функцию WordPress, если вы работаете в движке WordPress, чтобы сделать допустимый оператор SQL, превратите второе «WHERE» в «и», и у вас будет действительный запрос SQL. Вы описываете трехкомпонентное утверждение WHERE, которое может быть показано как:

WHERE (`meta_key` LIKE 'description') AND (`meta_value` is null) AND (`term_id` = '3')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...