我试图用新条目更新菜肴表并将其交叉引用到现有的成分表中。对于添加的每个菜肴,用户需要分配多行所需的现有成分和体积。提交后,应将菜肴放入表格中。菜单'并且指定的成分应该输入到“洗涤剂”中。链表。
我的表格设置如下:
表:"菜肴"专栏:DishID,DishName,Serves等... 表:" DishIng"列:DishID,IngID,卷 表:"成分"列:IngID,IngName,Packsize等...
HTML:
<li>IngID: <input type="text" name="IngID"></li>
<li>Volume: <input type="text" name="Volume"></li>
<li>IngID: <input type="text" name="IngID"></li>
<li>Volume: <input type="text" name="Volume"></li>
</ul>
<input type="submit">
</form>
任何有关在HTML中动态添加一行成分的建议都会非常受欢迎。
PHP:
<?php
require_once('db_connect.php');
$DishID = mysqli_real_escape_string($con, $_POST['DishID']);
$DishName = mysqli_real_escape_string($con, $_POST['DishName']);
$DishCatID = mysqli_real_escape_string($con, $_POST['DishCatID']);
$Serving = mysqli_real_escape_string($con, $_POST['Serving']);
$SRP = mysqli_real_escape_string($con, $_POST['SRP']);
$Method = mysqli_real_escape_string($con, $_POST['Method']);
$SourceID = mysqli_real_escape_string($con, $_POST['SourceID']);
$IngID = mysqli_real_escape_string($con, $_POST['IngID']);
$Volume = mysqli_real_escape_string($con, $_POST['Volume']);
$array = array('$DishID', '$IngID', '$Volume');
$sql="INSERT INTO Dishes (DishID, DishName, DishCatID, Serving, SRP, Method, SourceID)
VALUES ('$DishID', '$DishName', '$DishCatID', '$Serving', '$SRP', '$Method', '$SourceID')";
$sql2 = "INSERT INTO DishIng (DishID, IngID, Volume) VALUES ('$DishID', '$IngID', '$Volume')";
$it = new ArrayIterator ( $array );
$cit = new CachingIterator ( $it );
foreach ($cit as $value)
{
$sql2 .= "('".$cit->key()."','" .$cit->current()."')";
if( $cit->hasNext() )
{
$sql2 .= ",";
}
}
if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
if (!mysqli_query($con,$sql2)) {
die('Error: ' . mysqli_error($con));
}
echo "records added";
require_once('db_disconnect.php');
php?>
目前正在提交,它只会更新“菜肴”。表并给我这条消息:&#39; 1记录已添加错误:您的SQL语法中有错误;查看与您的MySQL服务器版本相对应的手册,以便在#&quot;(&#39; 0&#39;,&#39; $ DishID&#39;)附近使用正确的语法,(&#39; 1&#39; ;,&#39; $ IngID&#39),(&#39; 2&#39;&#39; $卷&#39;)&#39;在第1行&#39;
答案 0 :(得分:1)
您如何做到这一点的高级别(尽管有很多方法,这只是一个直接的DB / PHP / HTML):
用户提交表单后:
基本上,有两个FOR循环。一个遍历最初的成分列表以制作表单,另一个循环遍历提交的表单。带有复选标记的每种成分都需要将自己的SQL INSERT语句添加到DishIng表中。
如何在php中迭代SQL结果:Iterate through Mysql Rows in PHP
如何遍历php中的表单字段:PHP loop through array of HTML textboxes
因为您正在接受用户输入并将其粘贴到MySQL插入查询中,所以您还需要确保在提交查询之前清理输入,这样可以避免某些恶意攻击者拉出一些SQL注入并杀死您的D B。
最后:这是一个非常含糊的问题,所以我预计它会被投票,我的反应也很模糊。我之所以写它只是因为它触及了一个非常普遍的整体想法,如果你刚刚开始进行Web开发,就很难以简洁的方式提问。在写这篇文章时你可能会被困几次。尝试将您的问题缩小到一个问题,并将该问题/问题转移到stackoverflow。你也可以点击Google,因为你需要在这里做的所有事情都是由其他人在论坛,博客,维基和Q&amp; A网站上撰写的。