2017-03-07 68 views
0

我有一个表单,有人可以添加多个电话号码和扩展名,并且我试图将它们保存在数据库中,每当我保存数据时它会在两个字段中显示单词“Array”。从窗体插入数组到sql

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

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; 
} 
+0

什么问题的任何格式面对它? – Shujaat

+0

每当我发布表中的数据结果显示为Array不是我发布的真实值 –

+0

为什么你在电话循环中循环扩展,你有每个电话的多个扩展吗? – mrahmat

回答

1

只要您发布有多个同名元素格式如

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

数据被张贴阵列的操作页面。 您可以通过这个数组必须循环将它们保存在数据库

可以循环像这样,创建一个要 下面的代码保存您的号码和分机逗号seprated你

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); 
+0

我已经有我的输入像这样''输入类型=“文本”名称=“电话[]”> –

+0

多数民众赞成在权利,但在行动页面你的$ _POST ['手机']作为数组这就是为什么它作为数组插入您的列 – yogesh84

+0

请参阅我编辑的答案 – yogesh84