【问题标题】:Iterating through array and uploading data into rows in database遍历数组并将数据上传到数据库中的行
【发布时间】:2013-06-07 20:13:59
【问题描述】:

我有几个复选框,如果它们被选中,我想将它们的值插入数据库。

HTML:
<input type="checkbox" id="m1" name="category[]" value="1"/>
<input type="checkbox" id="m2" name="category[]" value="2"/>
<input type="checkbox" id="m3" name="category[]" value="3"/>
<input type="checkbox" id="m4" name="category[]" value="4"/>
<input type="checkbox" id="m5" name="category[]" value="5"/>

我可以很好地打印出类别数组,它会根据我单击的复选框为我提供正确的值。我似乎无法遍历它们以在我的数据库中插入多行。

插入数据库后,数据库应如下所示:

| USERID | MACHINEID | 
----------------------
|      1 |         1 |  
|      1 |         2 |   
|      1 |         3 |  

如果我只点击前 3 个复选框。

我在想这样的事情:

$array_zone = $_POST['category'];
if(isset($_POST['category']))
{
 for($i = 0; $i < count($array_zone); $i++)
{
 mysql_query("INSERT INTO `userPlanDetail` (`user_id`, `machine_id`) VALUES ('$user_id', '  $array_zone[$i]')");
 }
} 

【问题讨论】:

  • 逻辑不正确。 $_POST 可能有数据,但类别部分可能为空。您的示例代码也容易受到SQL injection attacks 的攻击,因此请不要使用此代码。
  • 感谢您的信息,但现在我只是想将复选框输入到数据库中。之后保护它很简单
  • 只想提一下,您应该先转义这些值,然后再将它们直接放入查询中。查找 SQL 注入。

标签: php mysql post checkbox


【解决方案1】:

试试这个,看起来你有空白问题

mysql_query("INSERT INTO `userPlanDetail` (`user_id`, `machine_id`) VALUES ('$user_id', '$array_zone[$i]')");

如果有多个,最好像这样插入它们

 mysql_query("INSERT INTO `userPlanDetail` (`user_id`, `machine_id`) 
VALUES ('$user_id', '$array_zone[$i]'), ('$user_id', '$array_zone[$i++]')");

它们将作为单个语句更快地插入

查看这里了解更多信息

Multiple mysql INSERT statements in one query php

即使是为了测试,mysql_* 仍然是非常糟糕的做法。

【讨论】:

    【解决方案2】:

    如果您的 machineid 列是 int,则 '$array_zone[$i]' 中的空格可能会给您带来麻烦。你在检查 mysql 错误吗?

    【讨论】:

    • 目前我没有检查错误。我刚刚做了,它说外键约束失败。 user_id 和 machine_id 都是外键
    猜你喜欢
    • 2016-01-08
    • 1970-01-01
    • 2016-10-02
    • 2012-10-11
    • 2022-11-14
    • 2018-01-31
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多