【问题标题】:Codeigniter inserting value into arrayCodeigniter将值插入数组
【发布时间】:2010-10-03 21:45:25
【问题描述】:

几个小时前我问了一个关于 SO 的问题。

如何在 Codeigniter 中将表单中的字段名称数组插入 SQL 数据库。

<tr>
<td><input type="text" name="user[0][name]" value=""></td>
<td><input type="text" name="user[0][address]" value=""><br></td>
<td><input type="text" name="user[0][age]" value=""></td>
<td><input type="text" name="user[0][email]" value=""></td>

<tr>
<td><input type="text" name="user[1][name]" value=""></td>
<td><input type="text" name="user[1][address]" value=""><br></td>
<td><input type="text" name="user[1][age]" value=""></td>
<td><input type="text" name="user[1][email]" value=""></td>
</tr>
..........//so on

这是我得到的最佳答案

foreach($_POST['user'] as $user)
 {
    $this->db->insert('mytable', $user);
 }

现在我想将用户会话数据生成的 id 传递到这个数组中 + 一些其他值,例如当前时间

是否可以调整上述解决方案?

The Previous Discussion Here

【问题讨论】:

    标签: sql codeigniter


    【解决方案1】:
    foreach($_POST['user'] as &$user)
     {
        $user['additional_data'] = $_SESSION['additional_data'];
        $user['current_time'] = time();
        $this->db->insert('mytable', $user);
     }
    

    注意 &$user 中的 & ,它是通过引用传递的,它允许在 foreach 循环中操作数组。如果您稍后引用 user,请记住 unset($user) 以删除对 $_POST['user'] 数组的最后一个元素的引用。

    【讨论】:

    • 看准了!这似乎是一个针对我的阴谋。我尝试了所有向我抛出各种错误的变体,然后有人@SO在一毫秒内解决了它。 :-) 谢谢。
    • 实际上,看它,您可以忽略通过引用传递(&之前&$user),它应该仍然有效。仅当您在代码中的任何其他位置使用 $_POST['user'] 数组时,通过引用传递才有用。
    • 是的,我不必使用“&”。
    • 它有效,但我不明白。数组解构的顺序是什么
    【解决方案2】:

    我不知道我是否在这里遗漏了什么,但你不能删除foreach 并像这样构建你的代码:

    $var1 = $_POST['user_var1'] * 3 + 1 / 5;
    $this->db->insert('mytable', $var1);
    $var2 = gettime();
    $this->db->insert('mytable', $var2);
    ....
    

    (gettime() 应该替换为获取时间的 PHP 命令,可能还有格式化函数)

    【讨论】:

    • 表单字段是动态生成的。这就是为什么我需要一个循环。
    猜你喜欢
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多