在foreach循环中插入多个表单数据

时间:2014-07-28 08:58:51

标签: php mysql

我真的不确定为什么我无法基于foreach循环将数据插入到我的表中。使用以下代码创建发布数据的表单:

<?php

        $eventList = query("SELECT event FROM PrimaryEvents");

        foreach ($eventList as $row)
        {
        //build the form
                echo("<div class='form-group'>");
                        echo("<label for='{$row["event"]}' class='col-lg-2 control-label'>'{$row["event"]}'</label>");
                        echo("<div class='col-lg-10'>");
                        echo("<input type='number' class='form-control' id='{$row["event"]}' name='{$row["event"]}' placeholder='????'>");
                echo("</div>");
                        echo("</div>");

        }

?>

$ eventList数组包含一个事件名称列表。

当谈到更新数据库时,我尝试了这个代码,它不起作用:

        $eventList = query("SELECT event FROM PrimaryEvents");
        logConsole(' eventlist is: ', $eventList, true);

        foreach ($eventList as $row)
        {
        query("INSERT INTO logbook ('{$row["event"]}') VALUES (?)", $_POST['{$row["event"]}']);
        }

我搜索过并搜索过但未找到解决方法。我在$ row [“event],'$ row [”event“]等尝试了一些变化,但是现在已经尝试了很多,我开始感到困惑。

我总是把''表示'意味着php会从''而不是变量值本身之间获取文本。

感谢您的帮助;

安迪

EDIT1:

代码更新为小说中的建议,但我仍然收到以下错误:

Notice: Undefined index: Test Event in /var/www/NST/public/input.php on line 53

Fatal error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Event) VALUES (?)' at line 1 in /var/www/NST/includes/functions.php on line 164

活动名称为“测试活动”。如果我在名为'testevent'的事件上使用代码,那么它的工作正常。

基于小说答案的代码如下:

        $eventList = query("SELECT event FROM PrimaryEvents");

        foreach ($eventList as $row)
        {    
        $event = trim($row['event']);
        $str = "INSERT INTO logbook (".$event.") VALUES (?)";
        query($str, $_POST[$event]);
        }

另外,我希望将所有事件数据添加到数据库的相同条目中​​(目前每次循环都会写入一个新行并增加主ID)。

感谢您的帮助!

EDIT2:根据小说建议现在更新表格。现在代码如下:

<?php

        $eventList = query("SELECT event FROM PrimaryEvents");

        foreach ($eventList as $row)
        {
        //build the form
                echo("<div class='form-group'>");
                        echo("<label for='".$row["event"]."' class='col-lg-2 control-label'>'".$row["event"]."'</label>");
                        echo("<div class='col-lg-10'>");
                        echo("<input type='number' class='form-control' id='".$row["event"]."' name='".$row["event"]."' placeholder='????'>");
                    echo("</div>");
                echo("</div>");

        }

?>

Chrome检查显示元素已正确命名:

<input type="number" class="form-control" id="Test Event" name="Test Event" placeholder="????">

当我尝试写入表格时,我仍然收到错误。 print_r($ _ POST)显示INSERT INTO仍在尝试写入TEST_EVENT。

1 个答案:

答案 0 :(得分:1)

您可以在foreach:

中替换此代码
query("INSERT INTO logbook ('{$row["event"]}') VALUES (?)", $_POST['{$row["event"]}']);

使用此代码:

$event = trim($row['event']);
$str = "INSERT INTO logbook (".$event.") VALUES (?)";
query($str, $_POST[$event]);

这应该可以解决您的问题

同时将您的表单粘贴代码修改为:

<?php

    $eventList = query("SELECT event FROM PrimaryEvents");

    foreach ($eventList as $row)
    {
    //build the form
            echo("<div class='form-group'>");
                    echo("<label for='".$row["event"]."' class='col-lg-2 control-label'>'".$row["event"]."'</label>");
                    echo("<div class='col-lg-10'>");
                    echo("<input type='number' class='form-control' id='".$row["event"]."' name='".$row["event"]."' placeholder='????'>");
            echo("</div>");
                    echo("</div>");

    }

?>