2013-08-07 3 views
0

Я работаю над введением значений в базу данных. Мне нужно вставлять продукты. пользователь может добавить более одного продукта на front-end. для этого у меня есть 2 таблицы в database.first tbl_test и второй tbl_test_months. В tbl_test я вставляю имя продукта и скорость роста продуктов. Цена и продажа продуктов идут на 12 месяцев. Поэтому во 2-й таблице мне нужно ввести продукт id, sales, price в зависимости от месяца. но мой идентификатор продукта не входит в правильный путь. я хочу после 12 месяцев, он должен взять 2-й продукт id.Это мой код. Пожалуйста, помогите мне.Вставить значения в базу данных mysql

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

Для начала, не используйте старую библиотеку MySQL, это массово устарели. Вместо этого используйте mysqli. – ciruvan

+1

Пожалуйста, определите ', но мой идентификатор продукта не входит правильно.'. Что он в настоящее время вставляет, и как вы думаете, он должен вставить? – Sumurai8

+0

он вставляет только 1-й идентификатор продукта во все поля. Я хочу вставить id для ex. У меня есть prodct1 с 1, я хочу вставить 1 для jan в dec 12 месяцев, и когда цикл начинается снова для prodct2 от jan до dec, тогда я хочу вставить product2 id. – user1523311

ответ

1

Вы должны принять идентификаторы в массиве и вставить их accordingly.Try как этот

$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); 
} 

И Makesure, что у вас есть auto increment поле в таблице tbl_test и не использовать mysql_* функции из-за они устарели. Вместо использования функций mysqli_* или PDO выписки

+0

теперь отображается эта ошибка. Примечание: Неопределенное смещение: 2. он вставляет идентификатор продукта в первые две строки и другой пустой. – user1523311

+0

Тогда может быть $ countProduct и $ cnt count is diff ... – Gautam3164

+0

да, это разные. $ countProduct - это количество номеров, а $ cnt - количество товаров. например, продукт содержит 12 месяцев. если я добавлю 2 продукта, то во 2-й таблице будет 24 записи. 12 для продукта1 и 12 для второго продукта. Я хочу идентификатор продукта 1 для первых 12 записей и следующих 12 12 записей идентификатора продукта 2. – user1523311

0

Из документов (http://php.net/manual/en/function.mysql-insert-id.php).

Возвращаемые значения: идентификатор генерируется для столбца AUTO_INCREMENT предыдущим запросом на успех, 0, если предыдущий запрос не генерирует значение AUTO_INCREMENT, или FALSE, если нет соединения с MySQL, не было установлено.

Я предполагаю, что ваш 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); 
} 
+0

У меня есть более 2 продуктов. с этим он вставляет product1 id для всех продуктов. – user1523311

+0

@ user1523311, у меня отсутствовала лидирующая одиночная кавычка перед '$ user_id' во втором запросе, который я исправил в приведенном выше коде. Что такое '$ countProduct' и' $ cnt'?Вам нужны записи в 'tbl_test_months' для каждой записи в' tbl_test' или я неправильно понял ваш вопрос? – vee

+0

$ countProduct - это количество товаров, а $ cnt - количество товаров. например, продукт содержит 12 месяцев. – user1523311

Смежные вопросы