You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP从MySQL表不同列相同值中查询客户还看过的商品

问题排查
  • 拼写错误:代码中表名写为page_veiws,和实际表名page_views不符
  • 逻辑错误:原有SQL实现的是「筛选被至少2个用户浏览过的所有商品」,和需求不匹配
正确SQL实现

查询逻辑为:先找到所有浏览过当前商品的非当前用户,再取这些用户浏览过的其他去重商品即可。

示例场景下的查询语句

你提供的场景中,当前商品为product_2,当前用户cookie_id为333333,对应查询语句:

SELECT DISTINCT item_id
FROM page_views
WHERE
  cookie_id IN (
    SELECT DISTINCT cookie_id
    FROM page_views
    WHERE item_id = 'product_2' AND cookie_id != '333333'
  )
  AND item_id != 'product_2';

执行后返回结果为product_1、product_3、product_7,完全符合需求。

业务代码适配版本

建议用预处理语句避免SQL注入,PHP写法参考:

// $current_product_id 为当前页面商品ID变量,$current_cookie_id 为当前用户cookie_id
$stmt = $conn->prepare("SELECT DISTINCT item_id FROM page_views WHERE cookie_id IN (SELECT DISTINCT cookie_id FROM page_views WHERE item_id = ? AND cookie_id != ?) AND item_id != ?");
$stmt->bind_param("sss", $current_product_id, $current_cookie_id, $current_product_id);
$stmt->execute();
$fetch_data = $stmt->get_result();

后续你可以直接用原有的foreach逻辑渲染返回的商品数据即可。

内容的提问来源于stack exchange,提问作者Anan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:51:01