我的代码将多个选定的值插入到两列中,但是这两列均包含第一个列出(选定)复选框的值。 例如。如果我选择了.Net2和Java3,则两个cloumns都将受到影响,但它们的值均为2。
<form action="" method="post" >
<div style="width:200px;border-radius:6px;margin:0px auto">
<table border="1">
<tr>
<td colspan="2">Select Technolgy:</td>
</tr>
<tr>
<td>PHP1</td>
<td><input type="checkbox" name="techno[]" value="1"></td>
</tr>
<tr>
<td>.Net2</td>
<td><input type="checkbox" name="techno[]" value="2"></td>
</tr>
<tr>
<td>Java3</td>
<td><input type="checkbox" name="techno[]" value="3"></td>
</tr>
<tr>
<td>Javascript4</td>
<td><input type="checkbox" name="techno[]" value="4"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="submit" name="sub"></td>
</tr>
</table>
</div>
</form>
<?php
if(isset($_POST['sub'])) {
$connection = mysqli_connect("localhost", "root", ""); // Establishing Connection with Server
$db = mysqli_select_db($connection, "ofobms"); // Selecting Database from Server
// Check connection
if (!$connection) {
die("Connection failed: " . mysqli_connect_error());
}
$checkbox1=$_POST['techno'];
//$hobb= $_POST['Hobbies'];
$chk="";
foreach($checkbox1 as $chk1)
{
$chk .= $chk1.",";
}
$N = count($checkbox1);
echo("<p>You selected $N techno(s): ");
for($i=0; $i < $N; $i++)
{
$in_ch=mysqli_query($connection,"INSERT INTO order_table (item_ID)
values ('$chk')");
}
if($in_ch==2)
{
echo'<script>alert("Inserted Successfully")</script>';
}
else
{
echo'<script>alert("Failed To Insert")</script>';
}
}
?>
这就是我当前的表格
| item_ID |
| 2
| 2
我希望它是这样,第二列的值为3
| item_ID |
| 2
| 3
答案 0 :(得分:0)
您不应串联所有复选框值。每个INSERT
查询只需要插入$checkbox
的当前元素。您还应该使用准备好的语句来防止SQL注入。
您也不需要两个循环,只需一个循环。
此外,mysqli_query()
在执行TRUE
查询时返回FALSE
或INSERT
,但我不确定为什么要将它与{{1} }。
2