php - 从 WordPress MySQL user_meta 表和我的自定义表中获取数据

标签 php mysql sql wordpress

我有一个自定义表“订单”,我在其中保存订单数据。

| id | user_id | product

通过这种方式,我从中获取数据。

$orders = $wpdb->get_results( 
   "
   SELECT * 
   FROM sbgf_pl_orders
   ORDER BY ID DESC
   LIMIT 500
");

foreach ( $orders as $order ){ 
  echo $order->id;
}

我想将我的请求与 user_meta 表相关联,这样我就可以从那些配置文件具有特定交付方式作为元“shippment_method”的用户那里获得订单。

我试过了,但是这个请求使我的网站重载

$orders = $wpdb->get_results( 
   "
   SELECT * 
   FROM sbgf_pl_orders, sbgf_user_meta
   WHERE sbgf_user_meta.shipping_method = '1' AND sbgf_user_meta.user_id=sbgf_user_meta.user_id
   ORDER BY ID DESC
   LIMIT 500
");

foreach ( $orders as $order ){ 
  echo $order->id;
}

最佳答案

您没有正确加入表格:

AND sbgf_user_meta.user_id=sbgf_user_meta.user_id

此条件将始终为真,并且您的加入会导致用户和具有送货方式 1 的订单之间的笛卡尔积。

此外,您应该始终使用显式连接而不是老式的隐式连接,如 this SO answer 中的示例所述。 .

最后,给查询中的表起别名,并在列前加上这些别名也是一个好习惯。这使查询更易于阅读和维护,并在列名冲突时避免歧义。

您的查询应该看起来像:

SELECT * 
FROM sbgf_pl_orders ord
INNER JOIN sbgf_user_meta usr ON usr.shipping_method = 1 AND usr.user_id = ord.user_id
ORDER BY ord.ID DESC
LIMIT 500

关于php - 从 WordPress MySQL user_meta 表和我的自定义表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54854257/

相关文章:

mysql - ExpressJS - 发送变量作为 POST 请求的响应

sql - 在 SQL Server 中的每个 SELECT 上使用 (nolock) 会发生什么?

php - 使用 PHP 更新表中的 MySQL "username"时出现问题

java - 使用 Play 框架配置数据库 mysql 时出错

mysql - 帮助进行 mysql 查询

php - 为什么 POST 和 GET 方法表单不适用于 PHP?

php - UTF-8贯穿始终

javascript - 联系 Form 7 和 javascript 获取表单数据

php - jQuery ajax 调用包含重音字符的 url 将错误的 Uri 从 IE 发送到服务器

php - 在 PHP 中优化从数组生成不重复的数组