MySQL PHP数组插入,多个表,不工作
我正在尝试用一个新条目更新一张菜谱,并将其与现有的配料表进行交叉引用。对于添加的每道菜,用户需要在多行上指定现有配料和所需体积。提交时,应将菜肴输入“菜肴”表格,并将指定的配料输入“菜肴”链接表格 我的桌子是这样设置的: 表:“菜肴”列:DishID、DishName、services等。。。 表:“DishIng”列:DishID、IngID、Volume 表:“成分”列:IngID、IngName、Packsize等 HTML:MySQL PHP数组插入,多个表,不工作,php,html,mysql,database,forms,Php,Html,Mysql,Database,Forms,我正在尝试用一个新条目更新一张菜谱,并将其与现有的配料表进行交叉引用。对于添加的每道菜,用户需要在多行上指定现有配料和所需体积。提交时,应将菜肴输入“菜肴”表格,并将指定的配料输入“菜肴”链接表格 我的桌子是这样设置的: 表:“菜肴”列:DishID、DishName、services等。。。 表:“DishIng”列:DishID、IngID、Volume 表:“成分”列:IngID、IngName、Packsize等 HTML: 迪希德: 姓名: 分类: 服务: SRP: 方法: 资料来源:
<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>
IngID:
卷:
英吉德:
卷:
任何在HTML中动态添加一行成分的建议都是非常受欢迎的
PHP:
这是一个很好的方法(虽然有很多方法,但这只是一种直接使用DB/PHP/HTML的方法):
您的php将创建一个表单来输入用户的dish字段李>
然后,php将从该菜的配料表中提取所有配料
您的php将遍历从该查询返回的结果,对于每个结果:
为配料创建复选框类型输入,以及
为成分和创建文本字段类型输入
使用IngID创建一个隐藏字段
用户提交表单后:
您的php将根据提交的表单上的dish字段将插入到dish表中
您的php将迭代表单提交中的“成分”字段,每个字段都将:
确定是否选中了“成分”复选框。如果是,它将:
使用隐藏的IngID字段和Volume字段插入碟形表
本质上,有两个FOR循环。一个循环通过最初的成分列表来制作表单,另一个循环通过提交的表单。每个带有复选标记的配料都需要自己的SQL INSERT语句才能添加到配料表中
如何在php中迭代SQL结果:
如何在php中迭代表单字段:
因为您正在接受用户输入并将其粘贴到MySQL insert查询中,所以您还需要确保在提交查询之前对输入进行清理,以避免一些恶棍拉一些SQL注入并杀死数据库
最后:这是一个相当模糊的问题,所以我预计它将被否决,我的回答也相当模糊。我之所以写这篇文章,是因为它涉及到一个非常普遍的总体概念,如果您刚刚开始web开发,那么很难用简洁的方式提问。在写这篇文章时,你可能会被卡住好几次。试着把你的问题缩小到一个问题上,然后把这个问题带到stackoverflow。你也可以点击谷歌,因为你在这里需要做的一切都是由无数其他人在论坛、博客、维基和问答网站上写的 原来的问题已被编辑。
<?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?>