如何向数据库添加多个变量数组

时间:2018-09-03 11:54:17

标签: php mysql implode

我想将我的数据插入数据库,我有两个具有数组数据的变量。

例如$_POST['link'] <=数组数据,$_POST['nama_link'] <=数组数据和$id_baru <=不是数组。

这是我能做的

$prep = array();
    foreach($_POST['link'] as $v ) {
        $prep[] = "($id_baru, $v)";
    }

    $add_link = $db->prepare("INSERT INTO link_relation (`id_e_lr`,`link_lr`) VALUES " . implode(', ', $prep));
    $add_link = $add_link->execute($prep);
上面的

代码仅添加$_POST['link']$id_baru,我需要在上面插入$_POST['nama_link']

我的桌子

id_e_lr   link_lr           nama_link_lr
========  =========        ==============
$id_baru  `$_POST['link']  $_POST['nama_link']
$id_baru  `$_POST['link']  $_POST['nama_link']
$id_baru  `$_POST['link']  $_POST['nama_link']
$id_baru  `$_POST['link']  $_POST['nama_link']

2 个答案:

答案 0 :(得分:1)

使用第一次数组迭代的键从$_POST['nama_link']获取值,并将其添加以插入值。

也请尝试正确使用prepared statement概念。

执行以下操作:-

$stmt = $db->prepare("INSERT INTO link_relation (`id_e_lr`,`link_lr`,`nama_link_lr`) VALUES (:id_baru, :v, :link)");

foreach ($_POST['link'] as $key=>$v){
    if(isset($_POST['nama_link'][$key])){
        $link = $_POST['nama_link'][$key];
    }
    $stmt->execute(array(
        ':id_baru' => $id_baru,
        ':v' => $v,
        ':link' => $link,
    ));
}

答案 1 :(得分:0)

如果使用预处理语句,则不能直接将数组绑定到db列。

您必须这样做:

$stmt->bind_param("sss", $var1, $var2, $var3);
foreach ($_POST['link'] as $i) {
    $var1 = $i['key1'];
    $var2 = $i['key2'];
    $var3 = $i['key3'];
    $stmt->execute();
}

其中keyN是您在$ _POST中的索引。