Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用MySQL选择查询(Wordpress)重新格式化MySQL数据库表中的JSON数组_Php_Mysql_Json_Database_Wordpress - Fatal编程技术网

Php 使用MySQL选择查询(Wordpress)重新格式化MySQL数据库表中的JSON数组

Php 使用MySQL选择查询(Wordpress)重新格式化MySQL数据库表中的JSON数组,php,mysql,json,database,wordpress,Php,Mysql,Json,Database,Wordpress,我有一个Wordpress构建,它使用火山口表单。不幸的是,插件的作者决定将所有复选框条目存储为WP数据库中的JSON数组,自定义字段值显示为数组,而不是实际的文本值 我想运行一个cron作业来重新格式化这些条目,但第一部分是试图找出如何查找和替换所有JSON对象的值 我编写了一个函数,用于从数据库中的特定表中获取值,特别是wp\u cf\u form\u entry\u values表。此函数在SELECT查询中使用正则表达式查找以{字符。这是我在值字段中查找JSON对象的方法,但可能有更好的

我有一个Wordpress构建,它使用火山口表单。不幸的是,插件的作者决定将所有复选框条目存储为WP数据库中的JSON数组,自定义字段值显示为数组,而不是实际的文本值

我想运行一个cron作业来重新格式化这些条目,但第一部分是试图找出如何查找和替换所有JSON对象的值

我编写了一个函数,用于从数据库中的特定表中获取值,特别是wp\u cf\u form\u entry\u values表。此函数在SELECT查询中使用正则表达式查找以{字符。这是我在值字段中查找JSON对象的方法,但可能有更好的方法。无论如何,函数获取这些值,并将它们从JSON对象重新格式化为单个项的列表,即在提交表单中检查的各种值

以下是我目前的职能:

function reformat_my_data() {
    global $wpdb;
    $data = $wpdb->get_results("SELECT value 
                                FROM `wp_cf_form_entry_values` 
                                WHERE `value` REGEXP '^[{].*$'
                                ");

    foreach($data as $key => $field) {

        foreach($field as $val) {
            if( is_json($val) ) {
                $val = json_decode($val, true);

                foreach($val as $checked) {
                    echo ' - ' . $checked . '<br/>';
                }
            }
        }

    }

}
reformat_my_data();
我还有另一个函数来确定该值是否为JSON对象: 函数为_json$string{ json_解码$string; 返回json\u last\u error==json\u error\u NONE; }

这将工作并输出如下列表: -检查1 -检查2 -检查3


我的问题是:如何将这个新格式化的值返回到数据库中?换句话说,如何在WP数据库中大量替换JSON类型的对象?

使用INSERT?或者您的问题有什么特别之处,不使用普通SQL语句?或者类似的东西。@Andy,谢谢您的评论。问题是我必须检查该值是否为JSON对象。这决定了我是否会对该值进行任何更改。问题是,我创建的表单上有20多个复选框问题,可能会有无休止的变化。因此,我无法通过value1、value2等进行检查。我需要检查该值是否为JSON对象。如果是,则我将需要重新格式化并替换它。我想我没有弄好…你不可以在if语句中添加一个insert并插入格式化的值吗?你可以使用$KEY作为索引。需要澄清的是:多个复选框可以有多个变体。即answer1、answer2或answer2、answer3、answer5或answer1、answer6、answer9等当前以JSON格式存储。即{answer2,answer3,answer5}。我想将此JSON格式替换为:answer2answer3answer5