从表单创建 PHP 动态查询

标签 php mysql database

我试图变得聪明,可能太聪明了,创建了一组表单,这些表单将根据输入名称动态地将数据插入数据库。

我拥有它,因此它可以正确构建查询,但是当我尝试插入它时失败,因为它是一个格式错误的查询,是否有更好的方法来实现我想要实现的目标,但类似?

<form method="post">
    <input type="text" name="form_array['text']" /> 
    <button name="insert">Go</button>
</form>

这是我在提交表单时生成的查询:

$setup['table'] = "table1";

if(isset($_POST['insert'])){
    $inserts = "";
    $values = "";

    foreach($_POST['form_array'] as $form_id => $form_data){
        if(!empty($form_data)){
            if(!isset($first_run)){
                $first_run = 1;
                $inserts .= $form_id;
                $values .= "'".$form_data."'";
            } else {
                $inserts .= ", ".$form_id;
                $values .= ", '".$form_data."'";
            }
        } else {
            die('error');
        }
    }

    die("INSERT INTO '".$setup['table']."' ($inserts) VALUES ($values)");
}

谢谢。

最佳答案

除了向您评论的所有修复之外;这个可以简化,试试吧;

<form method="post">
    <input type="text" name="form_array[column1]" /> 
    <input type="text" name="form_array[column2]" /> 
    <button name="insert">Go</button>
</form>

<?php
if(isset($_POST['insert'])){
    $table = 'table';
    $handler = 'form_array';
    $keys = array_keys($_POST[$handler]);
    $sql = "INSERT INTO `{$table}` (`".implode('`, `', $keys)."`) VALUES ('".implode("', '", $_POST[$handler])."')";
    echo $sql;
}

输出:

INSERT INTO `table` (`column1`, `column2`) VALUES ('value1', 'value2')

关于从表单创建 PHP 动态查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32059554/

相关文章:

所有行上的 MySQL GROUP BY 条件(不是 WHERE 或 HAVING)

mysql - 根据其中一个表的值从两个表中选择

php - 使用 MySQL 查询选择不同的选择选项时显示不同的潜水

php - `composer update` 没有更新到最新版本

php - 对特定列进行排名

php - 创建一个 PHP 类 -> 在另一个类中创建它的对象

mysql - 连接多个(超过 3 个)表的顺序是什么以及在哪里放置条件?

mysql - 数据库格式化的实现

sql - 数据规范化和编写查询

php - 错误 : SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'contenido' cannot be null