我一直在研究这个问题并在网上搜索,并在两天的大部分时间里空着。有很多汗,我可以将一个复选的值插入数据库;但是,如果我检查更多的框,它仍然只会插入一个值。
以下是我在输入用户页面上使用的代码(不包括表单标记):
<input type="checkbox" name="skills[]" value="1"> ActionScript<br />
<input type="checkbox" name="skills[]" value="2"> AppleScript <br />
现在我抓住两个会话变量,将所选技能链接到登录用户:
$skills = $_POST['skills'];
$id = $_SESSION['Ind_ID'];
以下是代码:
for ($i=0; $i<sizeof($skills);$i++) {
// echo $skills[$i];
$query= "INSERT INTO individual_skills(Skills_ID,Ind_ID) VALUES (" .$skills[$i]. ",
".$_SESSION['Ind_ID'].")";
}
使用我的echo $技能[$ i]我可以看到我正在循环并且可以向屏幕显示尽可能多的用户输入;所以,这是个好消息。
问题是我无法将多个值插入数据库。我一次可以做一个值;但是,不超过一个。
看来我的查询非常接近。如果我选择只选择一个复选框,它会很完美;但是,如果我选择多个,它只输入最后一个值(因此,如果我选择了10个值,它会将最后一个值插入到数据库中)。
任何帮助,非常感谢。
我使用PHP和MySQLi
根据LOOP反馈更新 这是更新的循环。我在循环外面有查询,现在尝试APPEND到我的初始查询。错误说明查询的语法有问题。
$query= "INSERT INTO individual_skills(Skills_ID,Ind_ID) VALUES (" .$skills[$i]. ",
".$_SESSION['Ind_ID'].")";
for ($i=0; $i<sizeof($skills);$i++) {
//echo $skills[$i];
$query.= " VALUES (" .$skills[$i]. ",".$_SESSION['Ind_ID'].")";
}
答案 0 :(得分:1)
考虑一下您的代码在做什么。每个循环,您重新定义$query
变量,这样当您到达最后时,$query
的最终值将是您检查的最后一个想法。
如果您仍想使用您编写的相同循环逻辑(这可能不是最有效的方法),那么您每次在循环中时都必须执行查询,以便您执行的每个查询都将被执行。
更确切地说,混淆似乎源于你还没有发现为变量赋值和将变量传递给函数执行的区别。