将值插入mysql数据库

时间:2013-08-07 06:55:52

标签: php mysql

我正在努力将值插入数据库。我需要插入产品。用户可以在前端添加多个产品。 为此我有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);
}

2 个答案:

答案 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);
}