【发布时间】:2019-12-03 11:35:47
【问题描述】:
我在这里遇到了一些问题,我无法从多个复选框中获取单个值。我想为每个刻度值 = 1 将其存储在不同的列中,该框在数据库中未打勾为 0。对于正常输入,我得到该值但不适用于复选框。你们能帮忙吗?
HTML 代码:这是我的 html 代码
<div class="col-sm-4">
<div class="form-group">
<label for="colour">Machine</label><br>
<input type="text" id="input_1">
</div><br>
<input type="checkbox" name="Inspection[]" value="true"> Function<br>
<input type="checkbox" name="Inspection[]" value="true"> Visual<br>
<input type="checkbox" name="Inspection[]" value="true"> Sleeve<br>
<input type="checkbox" name="Inspection[]" value="true"> Mail<br>
</div>
<p><input type="button" id="add_btn" value="Save"></p>
JavaScript:我应该在哪里获取值并将其存储在数据库中。
$(document).on("click", "input#add_btn", function() { Addsave() });
function Addsave()
{
var Inspec1 = $("#input_1").val();
var Inspec2 = $("input[name='Inspection']:checked").val();
var Inspec3 = $("input[name='Inspection']:checked").val();
var Inspec4 = $("input[name='Inspection']:checked").val();
var Inspec5 = $("input[name='Inspection']:checked").val();
var tables = ["example"];
var AddObject = new Object();
AddObject.column1 = Inspec1;
AddObject.column2 = Inspec2;
AddObject.column3 = Inspec3;
AddObject.column4 = Inspec4;
AddObject.column5 = Inspec5;
var list = [AddObject];
var objParams = JSON.stringify(list);
var render = function(){ renderAddExec(data);};
insertExecute(list,tables,render);
}
昨天我在这里 stackoverflow 发现了这个,但每次我尝试,它都不起作用。
<?php
// Make a MySQL Connection
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
$checkBox = $_POST['Inspection'];
if(isset($_POST['add_btn']))
{
for ($i=0; $i<sizeof($checkBox); $i++)
{
$query="INSERT INTO example (column1,column2,column3,column4) VALUES ('" . $checkBox[$i] . "')";
mysql_query($query) or die (mysql_error() );
}
echo "Complete";
}
?>
【问题讨论】:
-
请注意,
mysql_*函数已自 2013 年起弃用(在 PHP 5.5 中),并且自 PHP 7 起已删除(已发布2015 年)。这是因为它们存在严重 安全漏洞。 不要使用它们。请考虑升级您的 PHP 并改用MySQLi 或PDO,确保您还使用prepared statements 来防止SQL injection。 -
除此之外,您的
name是Inspection,但您正在检查Days的$_POST,它从未设置过。 -
另外,对于上面提到的问题,您将所有复选框的值设置为“true”,您必须考虑给它们适当的名称,即使您在存储时不使用它们。再次使用正确的形式将此值嵌入到您的 sql 查询中。
-
很抱歉我已经重新编辑了它,
Days是因为我使用简单的表格进行了很多测试,但即使是简单的表格也可以得到输入,也许@Obsidian 是正确,我可能会尝试使用 PDO 的另一种方式。 -
@SergheiLeonenco 我将值设置为
true,因为我希望将值插入到表的不同列中,每个复选框都有自己的列,它们并不意味着在同一列中。