【发布时间】:2011-01-20 08:35:29
【问题描述】:
我有一个包含很多变量的帖子,我想知道是否有某种方法可以动态地将信息插入 mysql,而不是手动输入,因为帖子变量会根据用户选择的内容而变化。
【问题讨论】:
我有一个包含很多变量的帖子,我想知道是否有某种方法可以动态地将信息插入 mysql,而不是手动输入,因为帖子变量会根据用户选择的内容而变化。
【问题讨论】:
这是我们用来做类似事情的方法(插入到我们无法控制且没有 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 等),则必须从表单数据中过滤掉这些列...
【讨论】: