2017-03-07 72 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