Mysql 尝试统计此在线用户';s正在处理的订单

Mysql 尝试统计此在线用户';s正在处理的订单,mysql,join,woocommerce,Mysql,Join,Woocommerce,我想限制每个用户每天只注册一个订单 为此,我需要在注册前检查每个用户的订单,看看该用户是否有任何“wp处理”订单 我在下面用PHP编写了MySQL查询,但它不起作用 我打印了“$sql\u count\u from\u status”的值,并在phpmyadmin的sql选项卡中尝试查找错误。 变量的值为: SELECT count(ID) FROM wp_posts p LEFT JOIN wp_postmeta m ON p.ID=m.post_id WHERE p.post_status

我想限制每个用户每天只注册一个订单

为此,我需要在注册前检查每个用户的订单,看看该用户是否有任何“wp处理”订单

我在下面用PHP编写了MySQL查询,但它不起作用

我打印了“$sql\u count\u from\u status”的值,并在phpmyadmin的sql选项卡中尝试查找错误。 变量的值为:

SELECT count(ID) FROM wp_posts p LEFT JOIN wp_postmeta m ON p.ID=m.post_id WHERE p.post_status LIKE 'wc-processing' AND p.post_type LIKE 'shop_order' AND m.meta_key LIKE '_customer_user' AND m.meta_value LIKE '100577';
结果在phpmyadmin中显示为零。现在我知道查询有问题了,因为我有用户100577的“处理订单”

function get_orders_count_from_status( $status , $this_user_id){
global $wpdb;

// We add 'wc-' prefix when is missing from order staus
$status = 'wc-' . str_replace('wc-', '', $status);

$sql_count_from_status = "
SELECT count(ID)  FROM {$wpdb->prefix}posts p
LEFT JOIN {$wpdb->prefix}postmeta m
ON p.ID=m.post_id
WHERE p.post_status LIKE '$status' AND p.post_type LIKE 'shop_order'
AND m.meta_key LIKE '_customer_user' 
AND m.meta_value LIKE '".$this_user_id."';";

return $wpdb->get_var($sql_count_from_status);
}

下面是一个看似合理的查询示例(尽管计算左连接有点奇怪):


和m.“像客户一样的用户”.$this\u user\u id.“
将此行移到其他地方。查看关于准备好的和绑定的查询这是我的错,我更正了查询。不。不是这样。去别的地方!谢谢你的回答,它解决了问题。现在,如果我想获取特定客户用户id的所有订单,其类型为“shop\u order”,状态为“已完成”,日期为“已完成”,那么查询如何进行?(例如userid:100577,status:completed,post_type:shop_order,_completed_date:2019-11-29)问题是我应该使用两个m.meta_键和两个m.meta_值,但不知道如何使用。如果您有新问题,请提出一个新问题,参考此问题OK,谢谢您的建议。如何将新问题引用到此问题?您可以将此页面的url粘贴到新问题的文本中
SELECT count(*)  
  FROM {$wpdb->prefix}posts p
  LEFT 
  JOIN {$wpdb->prefix}postmeta m
    ON m.post_id = p.ID   
   AND m.meta_key = '_customer_user' 
   AND m.meta_value = :this_user_id
 WHERE p.post_status LIKE :status
   AND p.post_type = 'shop_order'