员工可以向雇主索取在公务上花的金额。
我正在一个网站上工作,在一个工作人员填写了正式职责活动(详细信息)后,工作人员会看到一个动态表格,他们可以根据多长时间添加/删除运输/膳食/酒店索赔(几天完成任务。 Here是我提出的设计。
这是output。 TransportID 8& 9应该与activityID 11在同一行。有没有办法插入> 1个主键进入一个字段?
foreach ( $_POST["dates"] as $index=>$date ) {
$origin = $_POST["origins"][$index];
$destination = $_POST["destinations"][$index];
$cost = $_POST["costs"][$index];
//Insert into transport table
$sql_transport1 = sprintf("INSERT INTO tbl_transport (Date, Origin, Destination, Cost) VALUES ('%s','%s','%s','%s')",
mysql_real_escape_string($date),
mysql_real_escape_string($origin),
mysql_real_escape_string($destination),
mysql_real_escape_string($cost));
$result_transport1 = $db->query($sql_transport1);
$inserted_transport_id1 = $db->last_insert_id();
//Insert into transport_mainclaim table
$sql_transport_mainclaim1 = sprintf("INSERT INTO tbl_transport_mainclaim (claimID, transportID) VALUES ('%s','%s')",
mysql_real_escape_string($inserted_mainclaim_id1),
mysql_real_escape_string($inserted_transport_id1));
$result_transport_mainclaim1 = $db->query($sql_transport_mainclaim1);
$all_transport_id = implode(",",$inserted_transport_id1);
//Insert into mainclaim table
$sql_mainclaim = sprintf("INSERT INTO tbl_mainclaim (activityID, transportID, IC) VALUES ('%s','%s','%s')",
mysql_real_escape_string($inserted_activity_id),
mysql_real_escape_string($all_transport_id),
mysql_real_escape_string($_SESSION['IC']));
$result_mainclaim = $db->query($sql_mainclaim);
$inserted_mainclaim_id = $db->last_insert_id();
}
我尝试使用$all_transport_ID = implode(",",$inserted_transport_id1);
将ID与逗号分开,但未能这样做。
数据库结构是否设计错误?请指导我,因为我想要做到这一点。
答案 0 :(得分:0)
抱歉,由于声誉,我无法对你的帖子发表评论,但我认为你提供了错误的链接。您的代码在表tbl_transport上运行,而您提供的链接显示名为tbl_mainclaim的表。
无论如何,你试图在整数类型的列中插入两个整数值8和9作为活动id与int值11在同一行。你打算如何存储它?
更新:我认为你实现这段代码的方式是错误的。如果我是正确的,您的变量$inserted_transport_id1 = $db->last_insert_id();
是一个数组,而在这一行中,您将它视为一个变量。 $all_transport_id = implode(",",$inserted_transport_id1);
当您使用将数组合并为字符串的implode时,您将其视为数组。
{{1}}
所以我不确定你要实施什么。不清楚你要用整个SQL的foreach循环做什么。
如果您的应用程序允许,您可以删除tbl_transport_mainclaim,tbl_meal_mainclaim,tbl_hotel_mainclaim并直接指定表tbl_transport,tbl_hotel,tbl_meal的外键,该表引用tbl_mainclaim上的相应列。
我或许可以帮助您进一步解释您在此页面中尝试实施的内容。
答案 1 :(得分:0)
不要逃避$all_transport_id
;在$inserted_transport_id1
。{/ p>中逃避(或验证它们是数字)值
将来,这样做有助于调试:
echo $sql_mainclaim;