2017-02-26 83 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