Foreach不显示结果

时间:2014-06-10 20:25:36

标签: php mysql foreach wordpress

您正在使用以下查询需要从此查询中获取order_idproduct_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
    )

3 个答案:

答案 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仍然没有结果,可能是数据库问题?然后你必须先修复你的数据库。