更新: 复选框数组工作并填充适当的数据。现在我需要将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);
}
}
}
?>
答案 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注入问题。