php - 更改二维数组以实现 Codeigniter 兼容性批量插入

标签 php mysql codeigniter codeigniter-3

[{
    "synonyms": [{
        "synonyms": "s1",
        "wordId": 117
    }, {
        "synonyms": "s2",
        "wordId": 117
    }, {
        "synonyms": "s3",
        "wordId": 117
    }, {
        "synonyms": "s4",
        "wordId": 117
    }]
}, {
    "synonyms": [{
        "synonyms": "s5",
        "wordId": 118
    }, {
        "synonyms": "s6",
        "wordId": 118
    }, {
        "synonyms": "s7",
        "wordId": 118
    }]
}]

我试图添加上面的数组以进行 Codeigniter 批量插入,但失败了。 如何转换上面的数组以插入到mysql数据库

最佳答案

除此之外,您到目前为止还没有显示任何尝试过的内容,您必须了解您发布的字符串不是数组 - 而是 JSON 字符串。

为了实现您想要的效果,您必须解码该字符串 - 根据下面的示例,您应该能够理解如何做到这一点

class Your_Model extends CI_Model
{
    public function insert()
    {
        $strJson = '[{
            "synonyms": [{
                "synonyms": "s1",
                "wordId": 117
            }, {
                "synonyms": "s2",
                "wordId": 117
            }, {
                "synonyms": "s3",
                "wordId": 117
            }, {
                "synonyms": "s4",
                "wordId": 117
            }]
        }, {
            "synonyms": [{
                "synonyms": "s5",
                "wordId": 118
            }, {
                "synonyms": "s6",
                "wordId": 118
            }, {
                "synonyms": "s7",
                "wordId": 118
            }]
        }]';

        $arrData = json_decode($strJson);


        foreach($arrData AS $obj)
        {
            foreach($obj->synonyms AS $objSynonym)
            {
                $arrInsertData = [
                    "synonyms" => $objSynonym->synonyms,
                    "wordId" => $objSynonym->wordId
                ];

                $this->db->insert("your_table", $arrInsertData);
            }
        }

    }
}

如您所见,insert_batch 不是必需的,因为无论如何您都必须迭代数组。

关于php - 更改二维数组以实现 Codeigniter 兼容性批量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46032830/

相关文章:

php - 异步加载数据会加快页面加载速度吗?

Centos 中的 PHP Codeigniter : include_once failing for custom system libraries

codeigniter - NetBeans 8.0 PHP CodeIgniter 框架支持

mysql - 如何对两个单独的表使用 mysql WHERE IN

php - ORM 和 Symfony2 违反完整性约束 1062

php - 使用 CodeIgniter 进行高效的网站导航

javascript - 为什么我无法从 jQuery (PHP) 接收数据?

php - 使用curl登录并获取 session

php - 如何按年份添加和显示值

php - 定期将数据内容复制到 MySQL 表中的最优雅的方法是什么?