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

如何解决Flutter通过PHP向MySQL传递Integer类型变量失败问题

解决方案

1. 修正Flutter/Dart代码:确保整数转为字符串传递

http.post的body参数要求键值对为字符串类型,直接传递int类型可能导致编码异常,PHP端无法正确接收。修改edad的传递方式:

Future PrividerPruebaRegistroCliente(String Contrasena,String correo,String apodo,String apellido, int edad ) async {
    try{
      var Url= Uri.parse("http://192.168.0.105/PruebaRati/Prueba Php/Modelo_Php/RatiDemo/ProviderPrueba.php");
      var response = await http.post(Url,
        body:{
          'contrasena' : Contrasena,
          'correo' : correo,
          'apodo' : apodo,
          'apellido' : apellido,
          'edad' : edad.toString() // 将整数转为字符串传递
        },
      ).timeout(const Duration(seconds: 90)) ;
      // 新增:打印响应内容,方便排查问题
      print(response.body);
    }on TimeoutException catch(e){
      print("Tardo mucho la conexion");
    }on Error catch(e){
      print("Error de Http: ${e.toString()}");
    }
  }

2. 修正PHP代码:优化SQL语句并使用预处理(避免注入+类型匹配)

原问题点:

  • 给整数类型的edad字段加了单引号,导致MySQL需要隐式转换,可能引发类型不匹配
  • 直接拼接SQL存在严重的SQL注入风险
  • 未处理参数缺失的情况

修改后的PHP代码:

<?php
require("database connection");
// 先检查是否接收到所有必要参数
if(!isset($_POST['contrasena'], $_POST['correo'], $_POST['apodo'], $_POST['apellido'], $_POST['edad'])){
    echo "缺少必要参数";
    exit;
}

if(!$conex){
    echo("conexion incorrecta");
    exit;
}

// 使用预处理语句,避免SQL注入,同时保证类型匹配
$consulta = "INSERT INTO nametable(contrasenia, correo, apodo, apellido, edad) VALUES (?, ?, ?, ?, ?)";
$stmt = mysqli_prepare($conex, $consulta);
if(!$stmt){
    echo "预处理失败: " . mysqli_error($conex);
    exit;
}

// 绑定参数:s代表字符串,i代表整数,对应5个参数的类型
mysqli_stmt_bind_param($stmt, "ssssi", $_POST['contrasena'], $_POST['correo'], $_POST['apodo'], $_POST['apellido'], $_POST['edad']);

// 执行语句
if(mysqli_stmt_execute($stmt)){  
    echo("插入成功");
}else{
    echo("插入失败: " . mysqli_stmt_error($stmt));
}

// 关闭资源
mysqli_stmt_close($stmt);
mysqli_close($conex);
?>

3. 数据库字段验证

确认MySQL表nametable中的edad字段类型为整数类型(如INT、TINYINT等),不要设置为VARCHAR或其他字符串类型。

调试建议

  • 在Flutter中打印response.body,查看PHP返回的具体错误信息,快速定位问题
  • 在PHP中临时添加var_dump($_POST),检查接收到的参数是否正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:20:58