
本文介绍如何使用 PHP 将 MySQL 查询得到的多条记录(如手机号)拼接为形如 {09277432079,10236677868} 的标准字符串,涵盖数据收集、逗号分隔与花括号包裹的完整实现逻辑。
本文介绍如何使用 php 将 mysql 查询得到的多条记录(如手机号)拼接为形如 `{09277432079,10236677868}` 的标准字符串,涵盖数据收集、逗号分隔与花括号包裹的完整实现逻辑。
在实际开发中,常需将数据库查询结果转换为特定格式的字符串(例如用于前端 JSON 解析、API 响应或模板渲染)。原始代码直接 echo 每条数据,导致输出无分隔符且缺少包裹符号;而目标格式 {data,data,...} 要求:① 所有值用英文逗号连接;② 整体被一对大括号 {} 包裹;③ 末尾无多余逗号。
推荐采用「先收集、再拼接」的安全方式,避免手动控制分隔符逻辑出错。以下是优化后的完整实现:
<?php
require_once 'includes/connection.php';
// 1. 执行查询并初始化空数组
$data = "SELECT contact_number FROM contacts_tbl";
$query_posi = mysqli_query($con, $data);
if (!$query_posi) {
die("Query failed: " . mysqli_error($con));
}
$numbers = [];
while ($row = mysqli_fetch_assoc($query_posi)) {
// 确保字段存在且非空,增强健壮性
if (!empty($row['contact_number'])) {
$numbers[] = trim($row['contact_number']);
}
}
// 2. 使用 implode() 高效拼接(推荐)
$result = '{' . implode(',', $numbers) . '}';
echo $result; // 输出示例:{09277432079,10236677868,10436674963}
?>✅ 关键优势说明:
- mysqli_fetch_assoc() 比 mysqli_fetch_array() 更语义清晰,明确按字段名取值;
- implode() 内置函数自动处理逗号分隔,无需手动判断索引边界,杜绝“末尾多逗号”错误;
- 提前校验 !empty() 和 trim() 可过滤空值与首尾空格,提升数据质量;
- 错误检查(if (!$query_posi))保障查询失败时可及时定位问题。
⚠️ 注意事项:
- 若需兼容旧版 PHP(< 5.4),请勿使用短数组语法 [],改用 array();
- 如数据量极大(如万级记录),应考虑分页或流式处理,避免内存溢出;
- 若字段含特殊字符(如逗号、花括号),需转义或改用 JSON 格式(json_encode($numbers))更安全。
综上,与其手动循环拼接,不如善用 PHP 原生数组函数——简洁、可靠、可维护。


















