在mysql函数中创建动态php插入?

在mysql函数中创建动态php插入?,php,mysql,dynamic,insert,Php,Mysql,Dynamic,Insert,我有一篇文章有很多变量,我想知道是否有办法将信息动态插入mysql,而不是手动输入,因为帖子变量会根据用户的选择而变化。这就是我们用来做类似事情的方法(插入到我们无法控制且没有API访问权限的表中) 使用descripe查询可以确保只插入存在的列 $db = new DB(); $sql = 'DESCRIBE `table`'; $result = $db->query($sql); $row = array(); $query = array(); while ($row = $re

我有一篇文章有很多变量,我想知道是否有办法将信息动态插入mysql,而不是手动输入,因为帖子变量会根据用户的选择而变化。

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

使用descripe查询可以确保只插入存在的列

$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) . ')';
edit:DB()是我们对MDB2的包装


当然,这允许它们填充整行。如果您有限制列(自动增量ID等),则必须过滤那些表外数据…

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

使用descripe查询可以确保只插入存在的列

$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) . ')';
edit:DB()是我们对MDB2的包装

当然,这允许它们填充整行。如果您有限制列(自动增量ID等),则必须过滤那些表外数据…

当然还有强制性的“最好不要自动生成sql”。当然还有强制性的“最好不要自动生成sql”