Php 在foreach循环中插入多个表单数据
我真的不确定为什么不能基于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'>");
<?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)。即使更新了表单,在空间处理方面仍然存在类似错误。