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

PHP MySQL多表条码查询:如何关联products与more_barcodes表

条码搜索时关联products与more_barcodes表的解决方案

问题根源

你的原有SQL仅查询了products表的所有字段,且通过GROUP BY合并了同一商品的记录,导致无法获取more_barcodes表中的条码数据;同时PHP代码也没有正确读取关联表的条码,自然无法展示。另外SQL里的GROUP BY products.products_id是笔误,正确字段应为products.product_id。

修正后的SQL查询语句

我们可以用GROUP_CONCAT把同一商品对应的所有额外条码合并成一个字符串,方便后续PHP直接输出:

SELECT 
    products.*,
    GROUP_CONCAT(more_barcodes.barcode SEPARATOR '<br>') AS more_barcodes_list
FROM products 
LEFT JOIN more_barcodes ON products.product_id = more_barcodes.product_id
WHERE 
    products.barcode1 LIKE '%$user_search%' 
    OR products.barcode2 LIKE '%$user_search%' 
    OR products.barcode3 LIKE '%$user_search%' 
    OR more_barcodes.barcode LIKE '%$user_search%'
GROUP BY products.product_id

修正后的PHP代码

调整PHP逻辑,正确读取主表条码,同时输出合并后的额外条码:

$sql_check = mysql_query($query); 
while ($row_check = mysql_fetch_array($sql_check)) 
{
    echo "<br>" . $row_check['name'];
    
    // 展示products表中的条码
    echo $row_check['barcode1']; 
    if (!empty($row_check['barcode2'])) { echo "<br>" . $row_check['barcode2']; } 
    if (!empty($row_check['barcode3'])) { echo "<br>" . $row_check['barcode3']; } 
    
    // 展示more_barcodes表中的所有条码
    if (!empty($row_check['more_barcodes_list'])) { 
        echo "<br>ALL BARCODES:<br>" . $row_check['more_barcodes_list']; 
    }         
}

补充说明

  1. 原有PHP代码里的$row_check[barcode]是错误的,对应products表的字段应为barcode1;
  2. GROUP_CONCAT默认用逗号分隔,这里指定<br>是为了直接在页面换行展示条码;
  3. 另外,mysql_*系列函数已被废弃,建议改用mysqli或PDO扩展操作数据库,避免安全与兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:55:19