我正在努力将值插入数据库。我需要插入产品。用户可以在前端添加多个产品。 为此我有2个表进入database.first是tbl_test和第二个tbl_test_months。在tbl_test中我插入产品名称 和产品的增长率。产品价格和销售将持续12个月。所以在第二张表中我需要输入产品 id,销售,按月计价。但我的产品ID没有以正确的方式进入。我希望在12个月之后它应该 取第二个产品ID。这是我的代码。请帮帮我。
for($p=0; $p < $countProduct; $p++)
{
$revInsert= "insert into tbl_test(id, user_id, product_name, price_growth_rate_year1, price_growth_rate_year2, sale_growth_rate_year1, sale_growth_rate_year2, scenario, currency_type, price_raise)
values('','".$user_id."', '".$productName[$p]."', '".$growth_price_first[$p]."', '".$growth_price_second[$p]."', '".$growth_sale_first[$p]."', '".$growth_sale_second[$p]."', '".$scenario."', '".$pCurrency[$p]."', '".$priceRaiseStatus[$p]."')";
$QueryRev= mysql_query($revInsert);
$id= mysql_insert_id();
}
for($q=0; $q<$cnt; $q++)
{
$rev_month_insert= "insert into tbl_test_months(id, user_id, product_id, month, year, sale_volume, sale_price, scenario)
values('','".$user_id."', '".$id."','".$months1[$q % 12]."', '".$year."', '".$sale_volume1[$q]."', '".$price_currency_contract[$q]."', '".$scenario."')";
$query= mysql_query($rev_month_insert);
}
答案 0 :(得分:1)
你需要在数组中取出ID并相应地插入它们。像这样尝试
$id_arr = array();
for($p=0; $p < $countProduct; $p++)
{
$revInsert= "insert into tbl_test(id, user_id, product_name, price_growth_rate_year1, price_growth_rate_year2, sale_growth_rate_year1, sale_growth_rate_year2, scenario, currency_type, price_raise)
values('','".$user_id."', '".$productName[$p]."', '".$growth_price_first[$p]."', '".$growth_price_second[$p]."', '".$growth_sale_first[$p]."', '".$growth_sale_second[$p]."', '".$scenario."', '".$pCurrency[$p]."', '".$priceRaiseStatus[$p]."')";
$QueryRev= mysql_query($revInsert);
$id_arr[] = mysql_insert_id();
}
for($q=0; $q<$cnt; $q++)
{
$rev_month_insert= "insert into tbl_test_months(id, user_id, product_id, month, year, sale_volume, sale_price, scenario)
values('','".$user_id."', '".$id_arr[$q]."','".$months1[$q % 12]."', '".$year."', '".$sale_volume1[$q]."', '".$price_currency_contract[$q]."', '".$scenario."')";
$query= mysql_query($rev_month_insert);
}
并确保auto increment
表中有tbl_test
字段,并且不使用mysql_*
函数,因为它们已弃用。请使用mysqli_*
函数或{{1语句
答案 1 :(得分:0)
来自文档(http://php.net/manual/en/function.mysql-insert-id.php)。
返回值:上一次成功查询为AUTO_INCREMENT列生成的ID,如果上一个查询未生成AUTO_INCREMENT值,则为0;如果未建立MySQL连接,则为FALSE。
我假设id
列是AUTO_INCREMENT
列,使用mysql_insert_id
,在这种情况下,您不希望在插入语句中指定id
。
即使列是自动增量,您仍然可以在插入查询中提供id
。但在你的情况下,你提供的是''
。如果这是主键列,那么第一个循环中的插入查询应该在索引$p=1
处失败,因为主键重复。
根据您提供的内容,我认为解决方案如下:
for($p=0; $p < $countProduct; $p++)
{
$revInsert= "insert into tbl_test(user_id, product_name, price_growth_rate_year1, price_growth_rate_year2, sale_growth_rate_year1, sale_growth_rate_year2, scenario, currency_type, price_raise)
values('".$user_id."', '".$productName[$p]."', '".$growth_price_first[$p]."', '".$growth_price_second[$p]."', '".$growth_sale_first[$p]."', '".$growth_sale_second[$p]."', '".$scenario."', '".$pCurrency[$p]."', '".$priceRaiseStatus[$p]."')";
$QueryRev= mysql_query($revInsert);
$product_id= mysql_insert_id();
for($q=0; $q<$cnt; $q++)
{
$rev_month_insert= "insert into tbl_test_months(user_id, product_id, month, year, sale_volume, sale_price, scenario)
values('".$user_id."', '".$product_id."','".$months1[$q % 12]."', '".$year."', '".$sale_volume1[$q]."', '".$price_currency_contract[$q]."', '".$scenario."')";
$query= mysql_query($rev_month_insert);
}
// Update
unset($product_id);
}