首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用mysqli在数据库中插入动态多维数组

如何用mysqli在数据库中插入动态多维数组
EN

Stack Overflow用户
提问于 2014-09-08 14:24:23
回答 1查看 1.5K关注 0票数 0

我有以下数组:

代码语言:javascript
运行
复制
Array
(
    [step1] => 3
    [step2] => Array
        (
            [1] => Array
                (
                    [type] => 2
                    [price] => 312.5
                )

            [0] => Array
                (
                    [type] => 1
                    [price] => 51.5
                )

        )

    [step3] => Array
        (
            [first_name] => Test
            [last_name] => Test
        )

    [step4] => Some answer
)

我想把它插入数据库。Step2可以拥有用户想要的多少项。正如您可能已经注意到的,step2的两个数组之间存在差异。此外,step3还可以有更多的字段。这都是用户依赖的。

之所以是动态的,是因为用户可以管理仪表板中的表单输入字段。

我试着为每一步插入做一个foreach循环,但是这并不是很好。我想做的是:有一个动态的查询,这样每个字段都可以插入到数据库中。我认为最简单的方法是在step2上执行一个foreach循环,这样每个项都有其他的值。我的问题是如何使用mysqli (OOP)将这个多维数组中的所有数据插入数据库中。

还检查了其他一些类似的问题,比如:Inserting data into MySQL from a multidimensional array in phpinsert multiple rows via a php array into mysqlinsert php array into mysql,但这些都帮不了我。所以implode()不会帮我的。而且,由于每个字段在数据库中都有自己的字段,所以序列化将无法工作。(当用户编辑数据库中仪表板字段中的表单时,也会发生更改)

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-10 11:19:13

最后,我创建了第二个表来存放所有的订单细节。我编辑的另一个表是为了保存所有的用户数据。orders表还有一个要链接的userId。

然后,我创建了一个函数来插入所有用户数据:

代码语言:javascript
运行
复制
function insertUserData($array, $table) {

   $tbl_fields = $this->tableFields($table); 

    $query = "INSERT INTO `user_orders` ("; // Query
    foreach($array as $field => $value) {  
       if(array_key_exists($field, $tbl_fields)) {
            $query .= "`$field`, ";
       }
    }

    $query .= ") VALUES ("; // Add to query
    foreach($array as $field => $value) {  
       if(array_key_exists($field, $tbl_fields)) {
            $query .= "'$value', ";
       }
    }

    $query .=")"; // End 
    //echo $query; //Query output

    if($db->mysqli->query($query)) {
        $insert_id = $db->mysqli->insert_id;
    } else {
        echo 'Something went wrong';
    }
    return $insert_id;
}

对于第二步,我可以做以下工作:

代码语言:javascript
运行
复制
foreach($data['stap2'] as $key => $array) {
        $query = "INSERT INTO `orders` (";
        foreach($array as $field => $value) {
            if(array_key_exists($field, $table)) {
                $query .= "`$field`, ";
            }
        } 

        $query .= "`order_id`) VALUES (";

        foreach($array as $field => $value) {
            if(array_key_exists($field, $table)) {
                $query .= "'$value', ";
            }
        }
        $query .= "'$insert_id')";
        echo $query.'<br>';
    }

我检查每个字段到表中的字段。如果a等于,则将它们添加到查询中。这样我就可以创建一个动态查询。这为我解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25726512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档