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

Angular+PHP更新图片时遇MySQL错误:Truncated incorrect DOUBLE value

问题分析与解决方案

首先,你遇到的错误**Truncated incorrect DOUBLE value: 'trompita'**是由MySQL UPDATE语句的语法错误直接导致的,咱们一步步来解决:

核心错误点

你的UPDATE语句里,错误地用了AND来分隔要更新的字段:

$query = "UPDATE etservice set nom_service='$nom' AND image_ser='$filepath' WHERE id_service='$id'";

MySQL会把nom_service='trompita' AND image_ser='../assets/img/...'解析成一个布尔表达式(结果是1或0),然后试图把这个数值赋值给字符串类型的nom_service字段,这就触发了类型转换错误。

具体修正步骤

  1. 修复UPDATE语句语法
    多个字段更新时,必须用逗号分隔,而不是AND:
$query = "UPDATE etservice SET nom_service='$nom', image_ser='$filepath' WHERE id_service='$id'";
  1. 改用预处理语句防范SQL注入
    直接把用户输入拼进SQL语句里有严重的安全风险,推荐用MySQLi预处理语句来改写:
// 预处理更新语句
$stmt = $db->prepare("UPDATE etservice SET nom_service=?, image_ser=? WHERE id_service=?");
// 绑定参数:s代表字符串,i代表整数
$stmt->bind_param("ssi", $nom, $filepath, $id);
$stmt->execute();

if ($stmt->affected_rows > 0) {
    $res = "更新成功: " . $nom . " | ID: " . $id . " | 图片路径: " . $filepath;
    echo json_encode($res);
} else {
    echo json_encode("错误信息: " . $stmt->error);
}
$stmt->close();
  1. 额外优化建议
  • 你混合使用了$_REQUEST和$_POST获取参数,建议统一用$_POST(因为你是通过JSON请求传递数据),避免参数来源混淆;
  • 执行unlink删除旧文件前,先检查文件是否存在,防止报错:
$oldImagePath = $res[0]["image_ser"];
if (file_exists($oldImagePath)) {
    unlink($oldImagePath);
}

验证效果

修正后重新测试,UPDATE语句就能正确更新nom_service和image_ser两个字段,不会再触发类型转换错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:11:30