You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL中批量更新WordPress多站点所有postmeta表的meta_value字段

WordPress多站点批量更新postmeta表字段方案

方法一:生成批量UPDATE语句手动执行

先运行以下SQL查询,生成所有需要执行的更新语句:

SELECT CONCAT(
    'UPDATE ', table_name, ' SET meta_value = CONCAT(meta_value, '' [cf7ic]'') WHERE meta_value LIKE ''% \\"Your Name\\"%'' AND meta_key = ''_form'';'
) AS update_queries
FROM information_schema.tables
WHERE table_name LIKE 'wpsite_%_postmeta';

将查询结果中输出的所有SQL语句复制出来,一次性执行即可完成批量更新。

方法二:用MySQL存储过程自动循环执行

创建并调用存储过程来自动遍历所有目标表执行更新:

DELIMITER //
CREATE PROCEDURE BatchUpdatePostmeta()
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE tbl_name VARCHAR(255);
    DECLARE cur CURSOR FOR 
        SELECT table_name 
        FROM information_schema.tables 
        WHERE table_name LIKE 'wpsite_%_postmeta';
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    OPEN cur;
    read_loop: LOOP
        FETCH cur INTO tbl_name;
        IF done THEN
            LEAVE read_loop;
        END IF;
        SET @sql = CONCAT(
            'UPDATE ', tbl_name, ' SET meta_value = CONCAT(meta_value, '' [cf7ic]'') WHERE meta_value LIKE ''% \\"Your Name\\"%'' AND meta_key = ''_form'';'
        );
        PREPARE stmt FROM @sql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
    END LOOP;
    CLOSE cur;
END //
DELIMITER ;

-- 执行批量更新
CALL BatchUpdatePostmeta();

-- 可选:执行完成后删除存储过程
DROP PROCEDURE IF EXISTS BatchUpdatePostmeta;

注意事项

  • 操作前必须备份数据库,防止数据意外丢失
  • 确认wpsite_%_postmeta的匹配规则准确覆盖所有需要更新的表
  • 建议先在测试环境或单个表验证SQL逻辑,确认效果后再批量执行

内容的提问来源于stack exchange,提问作者Firmi9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 13:03:14