Вставка нескольких строк в таблицу из переменной в PHP для таблиц Mysql и Oracle - PullRequest
0 голосов
/ 19 марта 2012

Я получаю данные из некоторых таблиц и сохраняю их в переменной, как показано ниже -:

$result = mysql_query("SELECT * FROM sample where column=mysql_insert_id()");
while($row=mysql_fetch_array($result))
{
   $str = "'". $row["name"] . "',". "'" . $row[quantity] . "'," . "'" . $row["id"];
}

Итак, в моей переменной $str предположим, что у меня есть следующие значения -:

 shirt,10,1,pant,50,2....i.e. it will store values in a comma separated format.

Теперь я хочу вставить эти значения в другую таблицу, скажем test -:

$qry = "INSERT INTO test(name,quantity,id)values(".$str.");

Теперь я хочу сохранить значения в тестовой таблице в две строки, например -:

shirt    10   1
pant     50   2

Итак, как сделать то же самое для таблиц Mysql и Oracle?

Справка Plz

См. Мой запрос ниже -:

    $query2 = "SELECT sfoi.name, sfoi.sku, sfoi.qty_ordered, sfoi.price, sfoi.row_total, sfo.base_subtotal, sfo.base_shipping_amount, sfo.base_grand_total,
    (select mso.order_primary from mysql_sales_order mso where mso.increment_id =sfo.increment_id) 
    FROM sales_flat_order sfo
    JOIN sales_flat_order_item sfoi
    ON sfoi.order_id = sfo.entity_id
    WHERE sfo.increment_id = ". $order_id ;
$result_query2 = mysql_query($query2);

Таким образом, для одного идентификатора заказа, т.е. для одного заказаможет содержать более 1 товаров, т.е. много названий, номеров, заказанных количеств и т. д. Итак, во время mysql_fetch_array () я хочу, чтобы все данные о товаре были в одной переменной ... мой код для выборки выглядит так:

while($row = mysql_fetch_array($result_query2))
{
$string = "'". $row["name"] . "',". "'" . $row["sku"] . "'," . "'" . $row["qty_ordered"] . "',". "'" . $row["price"] . "'," . "'" . $row["row_total"] . "'," . "'" . $row["base_subtotal"]. "'," . "'" . $row["base_shipping_amount"] . "'," . "'" . $row["base_grand_total"] ."'," . $row["prod_foreign"];
$query3 = "INSERT into mysql_sales_product(name, sku, qty_ordered, price, row_total, base_subtotal,base_shipping_amount,base_grand_total,prod_foreign) VALUES(".$string.")";

} 
$result_query_product_outbound = mysql_query($query3);

Здесь я хочу сохранить результат mysql_ fetch_array в переменной таким образом, чтобы при наличии нескольких строк я все еще мог передавать эти строки с помощью переменной $ string.Например:

name   sku qty_ordered  price  row_total  subtotal shipping_amnt grand_total prod_foreign            
nokia   nk      2        500      1000      1000      300            1300         11
sansung sam     3        400      1200      1200      500            1700         30
sony    sny     4        200       800       800      200             1000         45

Ответы [ 2 ]

1 голос
/ 19 марта 2012

Для Oracle, как показано ниже:

INSERT ALL
   INTO your_table(column1,column2,column3) VALUES('values1.1', 'values1.2', 'values1.3')
   INTO your_table(column1,column2,column3) VALUES('values2.1', 'values2.2', 'values2.3')
SELECT * FROM dual;
1 голос
/ 19 марта 2012

Проще, чем делать цикл PHP, вы можете сделать это прямо в MySQL. Я не уверен, что это вариант для вас, так как вы не сказали нам, что случилось с Oracle ...

В любом случае, вот что я бы сделал в вашем случае:

INSERT INTO test(name,quantity,id)
SELECT name, quantity, id FROM sample where id=<your id here>

Или, если у вас несколько идентификаторов,

INSERT INTO test(name,quantity,id)
SELECT name, quantity, id FROM sample where id in (<your ids here as comma separated list>)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...