2012-03-19 81 views
0

我從一些表&獲取數據的變量存儲它像如下─在PHP中一個變量:插入多行到表從爲MySQL和Oracle表

$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. 

現在我要插入另一個表中這些值測試 - 說:

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

現在我要存儲在兩行的測試表中的值喜歡 - :

shirt 10 1 
pant  50 2 

因此,如何爲MySQL & Oracle表一樣嗎?

plz幫助

見我下面的query:

$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種產品,即許多名稱,SKU,訂購數量等,所以在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的結果變數的一種方式,如果有多行,我仍然可以使用變量$字符串傳遞這些行。例如:

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 
+0

在1 st插入,你有一個bug:你應該生成一個像「('shirt',10,1),('part',50,2)」 – haltabush 2012-03-23 07:11:29

回答

1

對於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; 
+0

嗨Oguz,如何將這些值分離爲1.1,1.2,1.3等等,因爲它們都存儲在一個變量中......假設有20列,那麼做同樣的事情是否可行? – Prat 2012-03-19 13:19:09

+0

如果我沒有弄錯,你使用了一個'$ str'變量的數組,那麼你可以在你的代碼中使用''row [「name」]' – 2012-03-19 13:48:26

+0

當然,你應該把其他的oracle事物在循環內部,例如'oci_execute',但是如果你不想面對性能問題,準備在數組或字符串中插入quieries,然後用'oci_execute'執行 – 2012-03-19 13:51:15

1

比做PHP循環更容易,您可以直接在MySQL中執行此操作。我不知道這是一個選擇,因爲你沒有告訴我們什麼與甲骨文的事......

無論如何,這裏就是我會做你的情況:

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

或者,如果你有多個ID,

INSERT INTO test(name,quantity,id) 
SELECT name, quantity, id FROM sample where id in (<your ids here as comma separated list>) 
+0

嗨,我需要做同樣的插入數據表Oracle也是,至於插入到Oracle中我只是通過變量。 - :插入Oracle_table(名稱,數量,id)值($ str1);等等,但我需要的是數據必須在單獨的行中...鞋50 7-1行,領帶20 10-2行同樣.. – Prat 2012-03-19 10:20:35

+0

基本上,你從MySQL數據庫中選擇所有,並將其插入到Oracle? – haltabush 2012-03-19 10:29:50

+0

嗨,我已經添加了我的代碼..plz檢查,指導我。 – Prat 2012-03-23 05:11:15