2010-01-23 118 views
0

我試圖更新我的wordpress mu數據庫中的表。我想更新所有wp_options表。這些表被命名爲這樣的:mysql通配符(忽略搜索中的一個/兩個字符)

  • wp_1_options
  • wp_2_options
  • ...等等。

我如何使用wp_any-character-here_options影響所有表格?我試圖查詢:

UPDATE wp_%_options 
    SET option_value = replace(option_value, 'http://www.old-domain.com', 'http://www.new-domain.com') 
WHERE option_name = 'home' OR option_name = 'siteurl'; 

...但MySQL的抱怨我在語法有錯誤......

回答

0

你不能通配符UPDATE語句 - 你必須寫爲每個表的UPDATE聲明。

未經測試:

CREATE PROCEDURE cleanup() 
BEGIN 

    DECLARE i INT DEFAULT 1; 

    PREPARE stmt FROM "UPDATE ? 
         SET option_value = REPLACE(option_value, 'http://www.old-domain.com', 'http://www.new-domain.com') 
         WHERE option_name IN ('home', 'siteurl')" 

    WHILE i <= 10 
    EXECUTE stmt USING CONCAT('wp_', i, '_options'); 

    SET i = i + 1; 
    END WHILE; 

    DEALLOCATE PREPARE stmt; 

END; 
+0

哦......真的嗎?有沒有其他的方式來實現這一點,或者我真的需要改變這個數字10倍? – Stan 2010-01-23 04:04:55

+0

@Stan:您可以使用MySQL的Prepared Statements來動態構建查詢。 MySQL支持更新多個表,但我不知道你的情況是否可行。 – 2010-01-23 04:08:44

+0

@Stan你應該從未創建過這樣的表格。 – Sampson 2010-01-23 04:10:41