2014-06-13 59 views
1

我有一個SQL查詢這樣如何通過php推送數組中的鍵和值?

SELECT wp_woocommerce_order_items.order_item_name, wp_woocommerce_order_itemmeta.meta_value FROM wp_woocommerce_order_items INNER JOIN wp_woocommerce_order_itemmeta ON wp_woocommerce_order_items.order_item_id=wp_woocommerce_order_itemmeta.order_item_id WHERE wp_woocommerce_order_items.order_item_type = 'line_item' AND wp_woocommerce_order_itemmeta.meta_key='_qty' AND wp_woocommerce_order_items.order_id=1477 

現在這個查詢給了我兩個結果這樣

order_item_name      meta_value 
Handicap Accessible Porta Potty   1 
Sani Stand Handwashing Station   1 

,我想推入的關鍵字數組這一點。

我試圖此代碼爲推

while ($row2 = mysql_fetch_array($item_name)) { 
    $order_items['name'] = $row2['order_item_name']; 
    $order_items['quantity'] = $row2['meta_value']; 
} 

但上面的代碼推只有一個元素。 請幫助

+2

您不會推動任何內容,您正在分配。嘗試使用'array_push'(或者更簡單的說,'[]')編寫一些代碼,然後看看是否有一些奇蹟寫入正確的代碼使其工作:p –

+0

您必須爲此使用多維數組 – Anish

回答

2

你可以做兩件事情之一:

讓您的陣列中的每個元素到另一個數組是這樣的:

while ($row2 = mysql_fetch_array($item_name)) { 
    $order_items[] = array('name' => $row2['order_item_name'],'quantity' => $row2['meta_value']); 
} 

或者乾脆讓它二維數組推動每個值成數值字段:

while ($row2 = mysql_fetch_array($item_name)) { 
    $order_items['name'][] = $row2['order_item_name']; 
    $order_items['quantity'][] = $row2['meta_value']; 
} 

第一方法將導致以下結構:

array(
[0] = array(
    name => name1, 
    quantity => qty1), 
[1] = array(
    name => name2, 
    quantity => qty2) 
) 

而第二種方法會給你這樣的事情:

array(
[name] = array(
    [0] => name1, 
    [1] => name2 
    ), 
[quantity] = array(
    [0] => qty1, 
    [1] => qty2 
    ) 
); 

這真的取決於你想以後和用它做怎麼樣。

1

首先,寫這樣的查詢,以便字段映射在SQL結果集已經完成:

SELECT wp_woocommerce_order_items.order_item_name name, wp_woocommerce_order_itemmeta.meta_value quantity 
FROM wp_woocommerce_order_items 
INNER JOIN wp_woocommerce_order_itemmeta ON wp_woocommerce_order_items.order_item_id=wp_woocommerce_order_itemmeta.order_item_id 
WHERE wp_woocommerce_order_items.order_item_type = 'line_item' AND wp_woocommerce_order_itemmeta.meta_key='_qty' AND wp_woocommerce_order_items.order_id=1477 

然後,建立數組:如果你想建立

$values = []; 
while (($row = mysql_fetch_assoc($item_name)) !== false) { 
    $values[] = $row; 
} 

一個鍵值數組(在這種情況下字段映射不那麼重要):

$values = []; 
while (($row = mysql_fetch_assoc($item_name)) !== false) { 
    $values[$row['name']] = $row['quantity']; 
}