将数组从表单插入到SQL

时间:2017-03-07 06:28:45

标签: php mysql

我有一个表格,有人可以添加多个电话号码和扩展名,我试图将它们保存在数据库中,每当我保存数据时,它都会在两个字段中显示“Array”一词。

到目前为止,这是我的代码:

if (!empty($_POST['Phone']) && isset($_POST['Extension'])) {
foreach ($_POST['Phone'] as $key => $value) {
    foreach ($_POST['Extension'] as $key => $value2) {
        $para = array("UserID" => \PDO::PARAM_INT, "Phone" => \PDO::PARAM_STR, "Extension" => \PDO::PARAM_STR);
        $val = array($_SESSION['UserID'], $_POST['Phone'], $_POST['Extension']);
        $r = DB::Call("[spPhoneInsert]", $para, $val);           
    }
}

if (count($r) > 0 && $r[0]['Result'] == 'Ok') {
    header("location:home.php?added_phone=1");
} else {
    header("location:home.php?error_phone=1");
}
exit;
}

1 个答案:

答案 0 :(得分:1)

每当您发布包含多个相同名称元素的表单时,如

<input type="text" name="phone[]">
<input type="text" name="phone[]">

数据作为数组发布到操作页面。 您必须遍历此数组以将其保存在数据库

你可以像这样循环并创建你想要的任何格式 以下代码将保存您的号码和扩展名逗号分隔

    foreach ($_POST['phone'] as $number){
    $allNumbers .= $number.',';
    }
foreach ($_POST['extension'] as $ext){
    $allExt .= $ext.',';
    }
  $para = array("UserID" => \PDO::PARAM_INT, "Phone" => \PDO::PARAM_STR, "Extension" => \PDO::PARAM_STR);
        $val = array($_SESSION['UserID'], trim($allNumbers,','), trim($allExt,','));
        $r = DB::Call("[spPhoneInsert]", $para, $val);