我有一个像这样的SQL查询
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'];
}
但是上面的代码只推送一个元素。 请帮忙
答案 0 :(得分: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 :(得分: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'];
}