0

我一直在研究这个并在网上搜索,两天的大部分时间都是空的。费了很多功夫,我可以将一个选中的值插入数据库;但是,如果我选中更多框,它仍然只会插入一个值。

这是我在输入用户页面上使用的代码(不包括表单标签):

  <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 $skills[$i] 我可以看到我正在循环并且可以在屏幕上显示尽可能多的用户输入;所以,这是个好消息。

问题是我无法将多个值插入 DB。我一次可以做一个值;但是,不超过一个。

看来我的查询非常接近。如果我选择只选择一个复选框,它就完美了;但是,如果我选择多个,它只输入最后一个值(因此,如果我选择了 10 个值,它会将最后一个值插入数据库)。

任何帮助,非常感谢。

我正在使用 PHP 和 MySQLi

根据反馈进行更新 FOR LOOP 这是更新后的循环。我在循环之外有查询,现在尝试追加到我的初始查询。错误表示查询的语法有问题。

$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'].")";
  }
4

1 回答 1

1

想想你的代码在做什么。每个循环,您都在重新定义$query变量,这样当您到达终点时,最终值$query将是您检查的最后一个值。

如果您仍然想使用您编写的相同循环逻辑,这可能不是最有效的方式,那么您必须每次循环内执行查询,以便您编写的每个查询都会被执行。

更准确地说,混淆似乎源于您还没有完全发现将值分配给变量和将变量传递给函数以执行之间的区别。

于 2013-01-20T12:49:42.717 回答