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

PHP中MySQL查询结果转JSON时如何添加非数据库自定义字段

实现方法

注意事项

JSON 规范不允许同一对象内存在重复键,你示例的期望输出中两个RFC键的写法不符合标准,实际输出时后出现的键值会覆盖前一个,建议你给自定义的RFC字段设置独立的唯一键名(如custom_RFC)避免冲突。

代码修改方案

你只需要在拿到数据库查询结果$res后,给数组内的元素追加自定义字段即可,修改后代码如下:

$rfc = "R.F.C. ATP-880818-2P4";
// 提取自定义RFC的目标值,去掉前缀
$customRfc = trim(str_replace('R.F.C. ', '', $rfc));

$sql ="SELECT CONCAT(lov.ov,'-'," ; 
$sql .="lov.customerID,'-', pc.firstname, ' ', pc.lastname), suc.calle," ;
$sql .="CONCAT('Monto: $',po.total_paid)," ;
$sql .="CONCAT(suc.colonia,', C.P. ',suc.codigo_postal),suc.nombre, pc.email,pc.RFC,"; 
$sql .="CONCAT(pa.address1,'C.P. ',pa.postcode),pa.colony, pa.city,"; 
$sql .="CONCAT('Telefono: ',pa.phone), po.date_add from lista_ordenes_tarjeta lov " ;
$sql .="INNER JOIN prstshp_customer pc ON  lov.customerID = pc.customerID " ;
$sql .="INNER JOIN prstshp_orders po ON lov.id_order = po.id_order " ;
$sql .="INNER JOIN sucursales suc on lov.sitio = suc.sitio " ;
$sql .="INNER JOIN prstshp_address pa on pc.id_customer = pa.id_customer " ;
$sql .="where carrier = 'E-PAQ' and liberacion = 1 limit 1";
$res = DB::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);

// 追加自定义字段,因为你用了limit 1只有一条数据,直接操作第一个元素即可
if (!empty($res)) {
    // 若需要将自定义字段放在对象最前面,使用array_merge合并
    $res[0] = array_merge(
        ['custom_RFC' => $customRfc], // 这里键名可自行修改,不要和原有键重复
        $res[0]
    );
}

// 输出JSON,添加JSON_UNESCAPED_UNICODE避免中文/特殊字符乱码
echo json_encode($res, JSON_UNESCAPED_UNICODE);

多数据批量追加方案

如果你的查询没有加limit,返回多条数据,可以通过遍历批量添加字段:

foreach ($res as &$item) {
    $item['custom_RFC'] = $customRfc;
}
unset($item); // 释放引用,避免后续逻辑出错

优化建议

建议给SQL中的CONCAT计算字段添加别名,能大幅提升输出JSON的可读性,示例:

SELECT 
  CONCAT(lov.ov,'-',lov.customerID,'-', pc.firstname, ' ', pc.lastname) AS order_identifier,
  suc.calle,
  CONCAT('Monto: $',po.total_paid) AS paid_amount,
  -- 其他字段同理加别名
  po.date_add 
FROM -- 后续查询逻辑不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:36:02