SQL 根据客户 ID 查询 Woocommerce 订单
SQL query for a Woocommerce orders based on Customer ID
如何对以下内容执行 SQL 查询?
$args = array(
'customer_id' => $customer_id,
'status' => 'completed',
'limit' => 1,
);
$orderslast = wc_get_orders( $args );
这是我得到的一个错误:
2019/08/14 09:08:03 [error] 11#11: *19 FastCGI sent in stderr: "' at line 7 for query
SELECT p.ID FROM wp_posts p
INNER JOIN wp_postmeta pm ON p.ID = pm.post_id
WHERE p.post_type = 'shop_order'
AND p.post_status = 'wc-completed'
AND pm.meta_key = '_customer_user'
AND pm.meta_value = '16495'
AND LIMIT 1
made by require('wp-blog-header.php'), require_once('wp-includes/template-loader.php'), include('/var/www/app/app/sib-cancelled.php')
PHP message: PHP Warning: fputcsv() expects at least 2 parameters, 1 given in /var/www/app/app/sib-cancelled.php on line 167" while reading response header from upstream, client: 172.18.0.1, server: , request: "GET /sib-cancelled/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost:4646"
试试这个:SELECT customer_id FROM yourTableName WHERE status = 'completed' AND limit = 1
已更新
您可以使用来自客户 ID 动态变量的以下(WPDB class SQL 查询):
global $wpdb;
$order_ids = $wpdb->get_col( "
SELECT p.ID FROM {$wpdb->prefix}posts p
INNER JOIN {$wpdb->prefix}postmeta pm ON p.ID = pm.post_id
WHERE p.post_type = 'shop_order'
AND p.post_status = 'wc-completed'
AND pm.meta_key = '_customer_user'
AND pm.meta_value = '$customer_id'
ORDER BY p.ID DESC LIMIT 1
");
您将从客户 ID 中获取包含最后一个订单 ID 的数组。
您也可以改用:
global $wpdb;
$order_ids = $wpdb->get_col( "
SELECT MAX(p.ID) FROM {$wpdb->prefix}posts p
INNER JOIN {$wpdb->prefix}postmeta pm ON p.ID = pm.post_id
WHERE p.post_type = 'shop_order'
AND p.post_status = 'wc-completed'
AND pm.meta_key = '_customer_user'
AND pm.meta_value = '$customer_id'
");
您可以将 get_col()
替换为 get_var()
以获取值而不是具有值的数组。
如果您想从电子邮件(客户帐单电子邮件)中获取最后一个订单 ID,请使用:
global $wpdb;
$order_ids = $wpdb->get_col( "
SELECT MAX(p.ID) FROM {$wpdb->prefix}posts p
INNER JOIN {$wpdb->prefix}postmeta pm ON p.ID = pm.post_id
WHERE p.post_type = 'shop_order'
AND p.post_status = 'wc-completed'
AND pm.meta_key = '_billing_email'
AND pm.meta_value = '$billing_email'
");
如何对以下内容执行 SQL 查询?
$args = array(
'customer_id' => $customer_id,
'status' => 'completed',
'limit' => 1,
);
$orderslast = wc_get_orders( $args );
这是我得到的一个错误:
2019/08/14 09:08:03 [error] 11#11: *19 FastCGI sent in stderr: "' at line 7 for query
SELECT p.ID FROM wp_posts p
INNER JOIN wp_postmeta pm ON p.ID = pm.post_id
WHERE p.post_type = 'shop_order'
AND p.post_status = 'wc-completed'
AND pm.meta_key = '_customer_user'
AND pm.meta_value = '16495'
AND LIMIT 1
made by require('wp-blog-header.php'), require_once('wp-includes/template-loader.php'), include('/var/www/app/app/sib-cancelled.php')
PHP message: PHP Warning: fputcsv() expects at least 2 parameters, 1 given in /var/www/app/app/sib-cancelled.php on line 167" while reading response header from upstream, client: 172.18.0.1, server: , request: "GET /sib-cancelled/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost:4646"
试试这个:SELECT customer_id FROM yourTableName WHERE status = 'completed' AND limit = 1
已更新
您可以使用来自客户 ID 动态变量的以下(WPDB class SQL 查询):
global $wpdb;
$order_ids = $wpdb->get_col( "
SELECT p.ID FROM {$wpdb->prefix}posts p
INNER JOIN {$wpdb->prefix}postmeta pm ON p.ID = pm.post_id
WHERE p.post_type = 'shop_order'
AND p.post_status = 'wc-completed'
AND pm.meta_key = '_customer_user'
AND pm.meta_value = '$customer_id'
ORDER BY p.ID DESC LIMIT 1
");
您将从客户 ID 中获取包含最后一个订单 ID 的数组。
您也可以改用:
global $wpdb;
$order_ids = $wpdb->get_col( "
SELECT MAX(p.ID) FROM {$wpdb->prefix}posts p
INNER JOIN {$wpdb->prefix}postmeta pm ON p.ID = pm.post_id
WHERE p.post_type = 'shop_order'
AND p.post_status = 'wc-completed'
AND pm.meta_key = '_customer_user'
AND pm.meta_value = '$customer_id'
");
您可以将 get_col()
替换为 get_var()
以获取值而不是具有值的数组。
如果您想从电子邮件(客户帐单电子邮件)中获取最后一个订单 ID,请使用:
global $wpdb;
$order_ids = $wpdb->get_col( "
SELECT MAX(p.ID) FROM {$wpdb->prefix}posts p
INNER JOIN {$wpdb->prefix}postmeta pm ON p.ID = pm.post_id
WHERE p.post_type = 'shop_order'
AND p.post_status = 'wc-completed'
AND pm.meta_key = '_billing_email'
AND pm.meta_value = '$billing_email'
");