2009-09-01 33 views
0

我努力學習的MySQL查詢與WordPress的使用....MySQL和WordPress的查詢語法

我所知道的是這樣的查詢,這給自定義字段「說明」的所有實例的值如果該字段爲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' 

所以我做錯了什麼;我認爲涉及類別的語法要比在另一個「WHERE」中標記要複雜得多。

+0

其實,你的問題是'wp_postmeta'表沒有'term_id'列。這可能是幾個月太晚了,但對於其他任何有類似問題的人來說....答案是對的,但沒有人說出爲什麼查詢失敗的原因。 – 2010-05-11 22:48:48

回答

1

這是我的頭頂。要使用更新的類別是什麼wp_update_term

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

您不必包括名稱和說明,只包括一個正在改變。 wp_update_term將把這個新數據合併到舊數據中,以便只有你給它的是什麼改變。

既然我已經讀過這篇文章,我不確定這是否回答。我不能坦白地告訴你的SQL的目標是什麼......

+0

感謝,好點,我將不得不通過使用'wp_update_term'而不是直接對話來了解我需要這種方式DB與PhpMyAdmin。 我想要做的就是能夠從WordPress中批量添加/更改/刪除自定義字段和值,因此從該級別開始有意義。 我需要找出如何讓'wp_update_term'讓我改變所有帖子,而不是像文檔所說的那樣一次一次'from post_id'。 – markratledge 2009-09-03 16:35:29

1

這可能嗎?

UPDATE SET 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

+0

嗯..拋出一個'#1054 - 'where子句中的未知列'term_id' FWIW,我正嘗試寫入所有具有該特定類別的帖子/頁面,'update_post_meta'需要帖子ID。但是,通過一個新的WP查詢循環,我想我可以選擇所有的帖子。我認爲這是第一眼看起來更復雜.... – markratledge 2009-09-01 18:21:41

0

考慮,如果你的WordPress的引擎內運行,你應該使用WordPress的功能,做一個有效的SQL語句,轉你的第二個「WHERE」變成了「和」,你會有一個有效的SQL查詢。您正在描述WHERE語句的三部分,可能會顯示爲:

WHERE (`meta_key` LIKE 'description') AND (`meta_value` is null) AND (`term_id` = '3') 
+0

我現在在PhpMyAdmin工作,並將移動到Wordpress函數,但也許我應該儘快跳到WordPress函數,因爲我想要在Wordpress中使用這些查詢無論如何,插件。 您的示例在'where子句'中拋出'#1054 - 未知列'term_id' – markratledge 2009-09-01 18:22:58