创建一个动态的PHP插入到mysql函数?

时间:2010-02-24 02:01:08

标签: php mysql dynamic insert

我有一个包含大量变量的帖子,我想知道是否有某种方法可以动态地将信息插入到mysql中,而不是手动将其全部输入,因为post变量会根据用户选择的内容而改变。

1 个答案:

答案 0 :(得分:4)

这是我们用来做类似的事情(插入到表中我们无法控制,并且没有API访问权限)

使用DESCRIBE查询可确保只插入存在的列。

$db = new DB();
$sql = 'DESCRIBE `table`';
$result = $db->query($sql);
$row = array();
$query = array();

while ($row = $result->fetchRow())
{
    if (array_key_exists($row['field'], $form_data))
        if (is_null($form_data[$row['field']]))
            $query[$row['field']] = 'NULL';
        else
            $query[$row['field']] = $db->quote($form_data[$row['field']]);
}

$keys = array_keys($query);

foreach ($keys as &$key)
    $key = $db->quoteIdentifier($key);

unset($key);

$vals = array_values($query);

$sql = 'INSERT INTO `table` '
     . '(' . implode(', ', $keys) . ') '
     . 'VALUES(' . implode(', ', $vals) . ')';

编辑:DB()是我们围绕MDB2的包装。

当然这允许他们填写整行。如果您有限制列(自动增量ID等),则必须从表单数据中过滤掉这些...