如何将MySQL DISTINCT查询结果存入PHP变量并拼接值
问题解决:MySQL DISTINCT结果拼接为PHP字符串
核心问题分析
你的代码存在两个关键问题:
- 循环中每次直接覆盖
$suppliers变量,最终只会保留最后一条查询结果;若查询无返回值,变量未初始化会输出为空。 COLUMN是MySQL保留关键字,直接在SQL中使用会触发语法错误,导致查询失败。
修复方案(两种实现方式)
方式一:数组存储+implode拼接(推荐,更灵活)
// 用反引号包裹保留关键字`COLUMN` $sql = "SELECT DISTINCT `COLUMN` FROM table WHERE <multiple conditions>"; $result = mysqli_query($con, $sql); // 先检查查询是否成功 if (!$result) { die(mysqli_error($con)); } // 初始化空数组存储结果 $suppliers = []; while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { $suppliers[] = $row['COLUMN']; } // 用'-'拼接数组元素为字符串 $suppliersStr = implode('-', $suppliers); echo $suppliersStr; // 输出:PLENITUDE-IREN
方式二:直接字符串累加
$sql = "SELECT DISTINCT `COLUMN` FROM table WHERE <multiple conditions>"; $result = mysqli_query($con, $sql); if (!$result) { die(mysqli_error($con)); } // 初始化空字符串 $suppliers = ''; while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { // 非首个元素时先添加分隔符 if (!empty($suppliers)) { $suppliers .= '-'; } $suppliers .= $row['COLUMN']; } echo $suppliers; // 输出:PLENITUDE-IREN
额外注意事项
- 永远要检查数据库查询的返回值,避免因SQL语法错误、连接问题导致后续逻辑出错。
- 若你的字段名确实是
COLUMN,必须用反引号包裹;建议尽量避免使用MySQL保留字作为字段/表名。
内容的提问来源于stack exchange,提问作者Francesco Minniti
相关产品推荐
相关产品推荐

