如何循环复选框数组并插入MySQL?

时间:2013-11-20 14:23:52

标签: php mysql checkbox

更新: 复选框数组工作并填充适当的数据。现在我需要将checkbox数据中的数据插入MySQL。这段代码出了点问题:

if(!empty($_POST['check1'])) {
foreach($_POST['check1'] as $check) { 
    $exclude_arr[] = $check;
    for ($j = 0; $j < count($exclude_arr); $j++){
        $exclude = $exclude_arr[$j];
        $sql = 'INSERT INTO exclude (name) VALUES ('.$exclude.')';
        $dbhc->query($sql);
    }
  }
}

上一篇:我在最后一列中有一个带有一系列复选框的HTML表格。我想取所有选中的复选框并将其值插入MySQL表中。复选框的值是从不同的MySQL表中提取的名称。我在循环查看复选框时遇到问题。

<?php
$dbhc = new mysqli('localhost','user','password','database') or die(mysql_error());
echo "<form action=\"file.php\" method=\"post\">
<table border='0'>
    <tr>
        <th>strategygame</th>
        <th width='130px'>approachpath</th>
        <th width='130px'>universe</th>
        <th width='130px'>strategylevel</th>
        <th width='130px'>capacity</th>
        <th width='130px'>exclude</th>
    </tr>";
while($row = mysqli_fetch_array($result)){
    $localcounter = $localcounter + 1;
    echo "<tr>";
    echo "<td>" . $row['strategygame'] . "</td>";
    echo "<td align='center'>" . $row['approachpath'] . "</td>";
    echo "<td align='center'>" . $row['universe'] . "</td>";
    echo "<td align='center'>" . number_format($row['strategylevel'], 0, '.', ',') . "</td>";
    echo "<td align='center'>" . number_format($row['capacity'], 0, '.', ',') . "</td>";
    echo "<td align='center'><input type=\"checkbox\" name=\"check1[{$row['id']}]\" value=\"{$row['strategygame']}\"/></td>";
    echo "</tr>";
}
echo "</table>
<input type=\"submit\" value=\"Save Selection\"/> 
</form>";
if(!empty($_POST['check1'])) {
    foreach($_POST['check1'] as $check) { 
        $exclude_arr[] = $check;
        for ($j = 0; $j < count($exclude_arr); $j++){
            $exclude = $exclude_arr[$j];
            $sql = 'INSERT INTO exclude (name) VALUES ('.$exclude.')';
            $dbhc->query($sql);
        }
    }
}
?>

1 个答案:

答案 0 :(得分:0)

只看html,你会遇到一个问题,那就是只有经过检查的复选框被发送到服务器,所以你实际上从来不知道哪个方框代表数据库中的哪一行,对于两个以表格形式发送的行,例如{ {1}}代表不同的东西。

我要改变的第一件事是确保您的复选框易于识别,例如:

$_POST['check1'][3]

正如您在上面所看到的,我已经删除了<input type=\"checkbox\" name=\"check1[{$row['id']}]\" value=\"{$row['strategygame']}\"/> ^^^^^^^^^^^^^^^^^^^^^^ don't use echo here, you are already echoing ^^^^^^^^^^^^ add an identifier to the checkbox 语句,因为您已经回应了。

另外,我不知道你的sql语句中echo来自哪里,但你可能有一个SQL注入问题。