2010-01-23 3 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

+0

@Stan : MySQL의 Prepared Statements를 사용하여 쿼리를 동적으로 구성 할 수 있습니다. MySQL은 여러 개의 테이블을 업데이트하는 것을 지원하지만, 상황에 따라 가능한지 모르겠습니다. –

+0

@ Stan 이런 식의 테이블을 생성해서는 안됩니다. – Sampson