2017-02-26 88 views
0

我想通過多個值發送到INSERT字符串,但該值返回爲NULL。通過發送多個複選框值到INSERT

我想向單個表,成員標識和團隊標識發送兩個值,團隊標識是複選框值,在此示例中作爲成員標識保持不變,因此我的表收集整數所以:

teamMember (table name) 
id, memberId, teamId 
1, 1,  2 
2, 1,  1 
3, 2,  3 

我希望你明白了。

這是我的我的插入:

$memberId = $_POST['memberId']; 
$teamId = $_POST['teamId']; 

foreach($teamId as $val){ 
    $sql = "INSERT INTO teamMember (teamId, memberId) VALUES ('$val','$memberId')"; 
} 


if ($conn->query($sql) === TRUE) { 
} 

我的形式如下:

<form action="cmt.php" method="POST"> 
    <input type="hidden" name="memberId" value="<?php echo $memberId; ?>"> 
      <?php 
      $sql = "SELECT * FROM team WHERE dashboardId = $dashboardId"; 
      $result = $conn->query($sql); 
       if($result->num_rows > 0){ 
        while($row = $result->fetch_assoc()){ 
         echo '<input name="teamId[]" type="checkbox" value="' . $row["id"] . '">' . $row["name"] . '<br><br>'; 
        } 
       } 
      ?> 
<form> 

我只需要CheckBox值作爲數組才能通過,所以我可以一起添加多個團隊的ID與用戶ID我選擇的團隊。

問題是如何插入多行,因爲這似乎只是每次插入一行。

+0

你應該使用'foreach'你的陣列,做它裏面插入,這就是我之前做這件事是我的項目。 – Roljhon

+0

FWIW,除非團隊名單很大,我只是將它們全部加載到json中,並在JavaScript中處理過濾 – Strawberry

+0

嗯,我只是試過,但即時通訊仍然只獲得插入的單個結果 – PhpDude

回答

0

實施例是這樣的:

$teamId = $_POST['teamId']; 
$memberId = $_POST['memberId']; 

foreach($teamId as $val){ 

    //I am confused with the $dashboardId, i supposed its $teamId? 
    $sql = "INSERT INTO teamMember (teamId, memberId) VALUES ('".$val."','".$memberId."')"; 

//execute the query here 
} 

OR

$teamId = $_POST['teamId']; 
$memberId = $_POST['memberId']; 

$sql = "INSERT INTO teamMember (teamId, memberId)" 
$c = 0; 
foreach($teamId as $val){ 

    if($c == 0){ 
     $sql.=" VALUES ('".$val."','".$memberId."')"; 
    }else{ 
     $sql.=", ('".$val."', '".$memberId."')"; 
    } 

    $c++; 
} 

//execute query here 
if ($conn->query($sql) === TRUE) { 
} 

$val爲每個複選框

+0

返回as一個NULL值... – PhpDude

+0

建立循環內的值列表,但在循環外執行查詢 – Strawberry

+0

@Strawberry他試圖插入多行,我認爲這是它應該喜歡的 – Roljhon

1

你傳入錯變量的值

$memberId = $_POST['memberId']; 
$teamId = implode(',', $_POST['teamId']); 

$sql = "INSERT INTO teamMember (teamId, memberId) VALUES ('$teamId', '$memberId')"; //<----teamID instead of dashboardId 


if ($conn->query($sql) === TRUE) { 
} 

編輯

要進入不同的行:

$memberId = $_POST['memberId']; 
//$teamId = implode(',', $_POST['teamId']); 
    $teamId = $_POST['teamId']; 
$sql = "INSERT INTO teamMember (teamId, memberId) "; 
$sql_concat=""; 
foreach ($teamId as $team) { 
    if($sql_concat == "") 
    $sql_concat .= " VALUES ('$team', '$memberId')"; 
    else 
    $sql_concat .= " , ('$team', '$memberId')"; 
} 
$sql .= $sql_concat; 
if ($conn->query($sql) === TRUE) { 
} 
+0

對不起,我確實正確,讓我更新我的帖子 – PhpDude

+0

所以現在它必須工作正常。同時檢查'$ _POST ['teamId']​​'是否設置,因爲如果沒有選中複選框,那麼你會得到一個錯誤 –

+0

它會插入一行,但不是多個,所以例如,如果我檢查說team1,team2 ,team3,它只插入系列的最後一個值以及成員id,但不是全部三個,成員編號爲 – PhpDude