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

phpMyAdmin整数列求和SQL正常,PHP代码触发Swift解码错误

问题分析与解决方案

首先,你遇到的核心问题是自动生成的PHP代码里SQL语句的别名引号被错误转义,这直接导致SQL执行后的输出不是合法JSON格式,进而触发了Swift的DecodingError.dataCorrupted错误。

错误点拆解

在phpMyAdmin中运行的SQL是完全正确的:

SELECT CAST(SUM(`foo1`) AS UNSIGNED) AS 'bar1', CAST(SUM(`foo2`) AS UNSIGNED) AS 'bar2' FROM `FUBAR`

但自动生成的PHP代码里,别名的引号被错误处理成了/‘bar1/’这种格式——这种转义方式完全不符合PHP字符串的语法规范,会导致SQL执行异常,最终PHP返回的内容不是预期的JSON数据(可能是SQL报错信息、乱码或无效文本),Swift自然无法解析。

修正后的PHP代码

你只需要把错误的转义引号替换成标准的英文单引号(或双引号,注意字符串包裹的一致性)即可:

// 方式1:双引号包裹SQL字符串,别名用单引号
$sql = "SELECT CAST(SUM(`foo1`) AS UNSIGNED) AS 'bar1', CAST(SUM(`foo2`) AS UNSIGNED) AS 'bar2' FROM `FUBAR`";

// 方式2:单引号包裹SQL字符串,别名用双引号(避免转义,更清晰)
$sql = 'SELECT CAST(SUM(`foo1`) AS UNSIGNED) AS "bar1", CAST(SUM(`foo2`) AS UNSIGNED) AS "bar2" FROM `FUBAR`';

额外注意事项

为了确保Swift能正确解析返回结果,PHP端执行SQL后还需要:

  • 检查SQL是否执行成功,避免语法或逻辑错误;
  • 使用json_encode()将查询结果转为JSON格式;
  • 设置正确的响应头:header('Content-Type: application/json');,明确告诉Swift接收的是JSON数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:22:01