【问题标题】:creating a dynamic php insert into mysql function?创建一个动态的php插入到mysql函数中?
【发布时间】:2011-01-20 08:35:29
【问题描述】:

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

【问题讨论】:

    标签: php mysql dynamic insert


    【解决方案1】:

    这是我们用来做类似事情的方法(插入到我们无法控制且没有 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 等),则必须从表单数据中过滤掉这些列...

    【讨论】:

    • 当然还有强制性的“最好不要自动生成sql。”
    猜你喜欢
    • 1970-01-01
    • 2015-12-10
    • 2015-07-22
    • 2011-01-27
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多