2009-08-27 120 views
0

我有兩個不同的表,從中我需要提取數據複雜的SQL查詢,涉及三個表和變量表名

blogs 

它具有以下列

blog_id 

,並具有另一個表一個變量名,如

$blog_id . "_options 

其中有以下列:

option_id, option_name, option_value 

例如:

option_id = 1, option_name='state', option_value='Texas' 
option_id = 2, option_name='blog_name', option_value='My Blog' 

最後,我提供了以下POST數據

state 

這就是我需要做的:獲取的任何名稱POST數據區域的博客。簡而言之,我需要在option_name='state'option_value="$_POST['state']'的同一張表上選擇option_valueoption_name 'blog_name',並且從blog_id的(從表blogs)列表中創建表名,並在末尾附加'_options'。

上帝我甚至不知道我想要做什麼可以用人的嘴說。

不管怎麼說,如果有任何地方,我可以用stackoverflow來問問。

讓我知道如果我能爲你澄清任何事情,我會嘗試。

順便說一句,這是因爲我使用Wordpress MU,並選擇在各種博客的動態創建的表上添加一些額外的設置。

回答

1

爲此,您可以直接SQL但我認爲你會更好使用內置的WordPress的功能,因此,如果要合併的所有數據庫結構的變化(這可能由於MU和定期WP內核設置很快),你還好。

這聽起來像你希望能夠拉約從活躍博客其他博客信息。我願意做的兩個步驟:

$blogs = get_blog_list(0,'all'); 
foreach($blogs as &$blog) { 
    switch_to_blog($blog['id']); 
    $blog['state'] = get_option('state'); 
    restore_current_blog(); 
} 
restore_current_blog(); 

這會給你的詳細信息列表上的所有MU活躍的博客安裝+從選項表中的狀態字段。

呀,比其少優雅,但它幾乎沒有混亂的功能。如果您需要在頁面加載中多次使用此信息,請使用WP的對象緩存來存儲變量以備後用。還有很多方法可以通過ajax或Web服務從父級博客調用此方法,或者實現memcache解決方案,以便這些數據可以集中存儲和管理(如果這成爲問題),但我認爲如果您使用對象在前端緩存一些類似WP Super Cache的東西,你應該沒問題。

+0

除非我誤解,否則在每次迭代之後,您的'$ blog ['state'] = get_option('state');'的賦值將被拋棄。我確信我可以寫''blog_state [] = get_option('state')',但我喜歡將數據插入到已有的博客數組中的想法,而不是將兩個數組鏈接到對方 – 2009-08-27 17:54:58

+0

或者我可以做類似 '的foreach($博客作爲$鍵=> $博客) { switch_to_blog($博客[ '身份證']); $ blogs [$ key] ['state'] = get_option('state'); restore_current_blog(); } restore_current_blog(); //我真的不知道爲什麼最後這個restore_current_blog()在這裏 – 2009-08-27 17:59:38

+0

是的,我的錯。如果您使用的是PHP 5,您還可以執行以下操作: foreach($ blogs as&$ blog){ 這種方法在每次迭代時都會返回到數組中的原始項目。 – Gipetto 2009-08-28 05:48:21

0

我不認爲你是這樣做的正確方法。

而不是使用表名_options的,爲什麼不能有像

blog_options 

其中包含

  • blog_id
  • option_id領域
  • OPTION_NAME
  • 請將option_value

然後你就可以高高興興地JOIN基於變量名blog_id

+0

好,對還是錯,這是WordPress的MU建議您保持對個人信息的博客,在博客上的選項表的方式。 – 2009-08-27 08:40:30

+0

我可能必須有一個單詞與jdub然後 – Mez 2009-08-27 16:17:22

0

如果我得到這個正確的,你正在創建表。

我不認爲這是一個好主意。

爲什麼不創建一個帶有變量字段的表,其中包含varchar類型的變量名?該字段可以包含$ blog_id。

就像你的問題對方回答。

+0

我創建變量名稱的表,因爲Wordpress MU上的每個博客都得到它自己的表。再次,正確或錯誤,這是WordPress的MU說如何做的。 – 2009-08-27 08:46:47