使用MySQL将许多动态生成的值插入到同一记录中

时间:2013-10-14 14:48:14

标签: php mysql

我有大约十个表单项要插入到MySQL数据库中,表单中的每个输入都有一个名称,也就是表行名。你可以在这里了解我想要做的事情:

foreach($_POST as $x=>$y) {

    if(!empty($y)) {

            $sql = "INSERT INTO db.table (`$x`) values ('$y');";
            // execute
        }
}

...我的问题是我需要让所有内容都进入相同的记录。现在,每个'INSERT'都被添加到一个新的记录中。是否有可能获得第一个'INSERT'的记录的id,然后从那里使用'Update'?或者有更好的方法来做到这一点吗?

由于

2 个答案:

答案 0 :(得分:1)

检查此功能:mysqli::insert_id
您可以将第一个查询作为insert执行,使用该函数获取生成的ID,然后执行update个查询。

答案 1 :(得分:1)

首先,您应该对@andy注意到的MySQL注入做一些事情 说过你可以尝试这样的东西,它只需一次性添加所有值。 此时不应该真正需要更新。

$columns = '';
$values = '';
$sql = "INSERT INTO db.table (%s) values (%s);";

foreach($_POST as $x=>$y) {
    if(!empty($y)) {
        $columns .= $x.',';
        $values .= $y.',';
    }
}

$columns = substr($columns,0,strlen($columns)-1));
$values = substr($values,0,strlen($values)-1));

$sql = sprintf($sql, $columns, $values);
//execute