我正在尝试学习用于Wordpress的MySQL查询....
我所知道的是这个查询,如果字段为NULL,则为自定义字段“description”的所有实例提供“test”的值
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'
所以我做错了;我认为与类别相关的语法比在另一个“WHERE”中标记要复杂得多。
答案 0 :(得分:2)
您不应该直接查询SQL。 wordpress中内置了一个抽象层。
您应该使用wp_query函数:
答案 1 :(得分:1)
这可能是吗?
更新wp_postmeta
设置meta_value
='测试'WHERE meta_key
LIKE'说明'和meta_value
为空 AND term_id ='3'
在我看来,我也遇到了问题;
还有你应该研究的update_post_meta()函数
http://codex.wordpress.org/Function_Reference/update_post_meta
答案 2 :(得分:1)
这是我的头脑。您想要用来更新类别的是wp_update_term
wp_update_term(3,'category',array(
'name' => 'new name',
'description' => 'new description'
));
您不必同时包含名称和说明,只需包含正在更改的名称和说明。 wp_update_term
会将这些新数据合并到旧数据中,这样只有您提供的数据才会被更改。
既然我已经再次阅读该帖子,我不确定这是否能解决问题。我不能老实告诉你SQL的目标是什么......
答案 3 :(得分:0)
如果你在WordPress引擎中运行,你应该使用WordPress函数,要创建一个有效的SQL语句,将你的第二个“WHERE”转换为“和”你有一个有效的SQL查询。您正在描述一个由三部分组成的WHERE语句,可以显示为:
WHERE (`meta_key` LIKE 'description') AND (`meta_value` is null) AND (`term_id` = '3')