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

Php 在foreach循环中插入多个表单数据,php,mysql,Php,Mysql,我真的不确定为什么不能基于foreach循环将数据插入表中。发布数据的表单是使用以下代码创建的: <?php $eventList = query("SELECT event FROM PrimaryEvents"); foreach ($eventList as $row) { //build the form echo("<div class='form-group'>");

我真的不确定为什么不能基于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>");

        }

?>
$event = trim($row['event']);
$str = "INSERT INTO logbook (".$event.") VALUES (?)";
query($str, $_POST[$event]);
我找了又找,但还没有找到解决办法。我尝试了$row[“event]、'$row[“event”]等的一些变体,但尝试了太多,现在我开始感到困惑

我总是将“”视为php将从“”之间获取文本,而不是变量值本身

谢谢你的帮助

安迪

编辑1:

代码更新为以下来自虚构的建议,但我仍然收到以下错误:

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
事件名为“Test event”。如果我在名为“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>");

        }

?>

您可以在foreach中替换此代码:

query("INSERT INTO logbook ('{$row["event"]}') VALUES (?)", $_POST['{$row["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>");

        }

?>
$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>");

    }

?>

你的
query()
函数做什么…你如何发布数据来保存它?它是否在表单提交中?如果数据存在或不存在,请尝试转储数据。如果事件名称中有空格,我将收到一个未定义的索引错误。我如何处理该错误?另外,我将如何修改它,以便它在$\u会话[“id”]时插入日志?我尝试修改如下:$str=“插入日志(id,“$event.”)值(?,“,”,$会话[“id”],$POST[$event];但它不起作用。如果它有空间,可以使用函数trim对其进行过滤-在我的示例中,需要将此字符串:$event=$row['event']更改为$event=trim($row['event']);我编辑我的答案您的数据库日志中是否有列测试事件?您的$\u POST中是否有关键测试事件?在foreachEdit之前调用print\r($\u POST)。即使更新了表单,在空间处理方面仍然存在类似错误。