您正在使用以下查询需要从此查询中获取order_id
和product_id
,
当我在phpmyadmin中运行查询时,会显示结果。
global $wpdb;
$sql = "SELECT oi.order_id, p.ID as product_id, p.post_title, p.post_author as seller_id,
oim2.meta_value as order_total, terms.name as order_status
FROM {$wpdb->prefix}woocommerce_order_items oi
LEFT JOIN {$wpdb->prefix}woocommerce_order_itemmeta oim ON oim.order_item_id = oi.order_item_id
LEFT JOIN {$wpdb->prefix}woocommerce_order_itemmeta oim2 ON oim2.order_item_id = oi.order_item_id
LEFT JOIN $wpdb->posts p ON oim.meta_value = p.ID
LEFT JOIN {$wpdb->term_relationships} rel ON oi.order_id = rel.object_id
LEFT JOIN {$wpdb->term_taxonomy} tax ON rel.term_taxonomy_id = tax.term_taxonomy_id
LEFT JOIN {$wpdb->terms} terms ON tax.term_id = terms.term_id
WHERE
oim.meta_key = '_product_id' AND
oim2.meta_key = '_line_total'
GROUP BY oi.order_id";
$orders = $wpdb->get_results( $sql );
if ( $orders ) {
foreach ($orders as $order) {
$result=customFunction(**$order->order_id,$order->product_id,$order->seller_id**);
}
问题是$order->order_id
并且$order->product_id
值未传递给函数,但只传递了$order->seller_id
。但是在phpmyadmin中,所有三个变量都存在值。
尝试了
echo $orders[product_id] ;
echo $orders[order_id] ;
echo $orders[seller_id];
仅限echo $orders[seller_id];
小屋显示该值。
这是数组结构:
Array (
[0] => stdClass Object (
[order_id] => 2774
[product_id] => 2531
[post_title] => Klassic Koalas Mug
[seller_id] => 3
[order_total] => 12
[order_status] => cancelled
)
[1] => stdClass Object (
[order_id] => 2869
[product_id] => 2622
[post_title] => Mug, Aqua
[seller_id] => 1
[order_total] => 1
[order_status] => on-hold
)
答案 0 :(得分:0)
我会在评论中加以评论,但我没有足够的声誉。做:
var_dump($orders)
看看里面是什么。也许它们被提取为' oi.order_id'。
答案 1 :(得分:0)
不确定product_id
,但order_id
似乎没有显示,因为您没有设置order_id
的别名。所以拿这个:
SELECT oi.order_id,
并将其更改为
SELECT oi.order_id as order_id,
过去执行$orders
转储以查看这样的整体结构:
echo '<pre>';
print_r($orders);
echo '</pre>';
答案 2 :(得分:0)
让我们先调试一下,var_dump是你的朋友!试试:
$orders = $wpdb->get_results( $sql );
var_dump($orders); die();
现在,添加var_dump后,检查结果,如果order_id和product_id仍然没有结果,可能是数据库问题?然后你必须先修复你的数据库。