将PHP数组中的动态表值插入MySQL表

时间:2016-03-29 10:16:12

标签: php mysql

需要帮助将动态字段和值插入PHP中的mysql db表。 样本数据

$data[] = array( 'client'=>$clientname, 
                 'amount' => 12000,
                 'balance'=>6000, 
                 'term'=>6,
                 'maturitydate'=>'2016-05-31'
               )
传递

参数以获取上述数据:branch = branchid,date = cutoffdate

这是我需要插入上述数据的表格结构。

字段:     科,     日期,     户口号码,     领域,     值

前两个字段值来自传递的参数,account_no来自使用传递的param查询db后的数据,因为字段值应来自数组索引,value是索引值。 插入数据后的表

branch   date         account_no field    value 
br001    2016-03-31   0010GL001  client   Client Name 1
br001    2016-03-31   0010GL001  amount   12000
br001    2016-03-31   0010GL001  balance  6000

...

一直在网上寻找一些可能的解决方案,但我找不到一个。 任何帮助将受到高度赞赏。谢谢

1 个答案:

答案 0 :(得分:1)

假设您已经有前三个值(branchdateaccount_no)并且还分配了$clientname,则可以使用foreach(),因此脚本应该是这样的:

<?php
    $branch = 'br001';
    $date   = '2016-03-31';
    $accNo  = '0010GL001';
    $clientname = 'client_name';
    $data = array('client' => $clientname,
        'amount' => 12000,
        'balance' => 6000,
        'term' => 6,
        'maturitydate' => '2016-05-31'
    );
    foreach ($data as $field => $value) {
        $query = "INSERT INTO db_table 
                (`branch`, `date`, `account_no`, `field`, `value`) 
            VALUES 
                ('" . $branch . "', '" . $date . "', '" . $accNo . "', '" . $field . "', '" . $value . "')";
        echo $query . '<br>';
        mysqli_query($link, $query) or die(mysqli_error($link));
    }
?>

这将产生以下查询:

INSERT INTO db_table (`branch`, `date`, `account_no`, `field`, `value`) VALUES ('br001', '2016-03-31', '0010GL001', 'client', 'client_name')
INSERT INTO db_table (`branch`, `date`, `account_no`, `field`, `value`) VALUES ('br001', '2016-03-31', '0010GL001', 'amount', '12000')
INSERT INTO db_table (`branch`, `date`, `account_no`, `field`, `value`) VALUES ('br001', '2016-03-31', '0010GL001', 'balance', '6000')
INSERT INTO db_table (`branch`, `date`, `account_no`, `field`, `value`) VALUES ('br001', '2016-03-31', '0010GL001', 'term', '6')
INSERT INTO db_table (`branch`, `date`, `account_no`, `field`, `value`) VALUES ('br001', '2016-03-31', '0010GL001', 'maturitydate', '2016-05-31')