Flutter 发送 post 请求到 php 后端失败

问题描述 投票:0回答:0

我在 flutter 中有一个提交表单函数,它将接收三个参数并将它们发送到 php 后端以对我的 sql 数据库执行更新操作。 sql数据库是主机 并使用 xampp 实现。

static Future<bool> submitForm(
      String userId, String userName, String userEmail) async {
    final body = {
      'id': userId,
      'name': userName,
      'email': userEmail,
      'action': 'edit'
    };

    final headers = {'Content-Type': 'application/json'};

    try {
      var url = Uri.parse('${databaseUrl}/fetch_data.php');
      var response = await http.post(
        url,
        headers: headers,
        body: json.encode(body),
      );

      if (response.statusCode == 200) {
        // Success!
        bool result = response.body == 'true';
        return result;
      } else {
        // Handle the error
        throw Exception('Failed to edit user');
      }
    } catch (e) {
      print('Error submitting form: $e');
      rethrow;
    }
  }

下面是我的 php 脚本 $data = json_decode(file_get_contents('php://input'), true);

    $id = $data['id'];
    $name = $data['name'];
    $email = $data['email'];
    
    $sql = "UPDATE user SET name=?, email=? WHERE id=?";
    $stmt = mysqli_prepare($conn, $sql);
    mysqli_stmt_bind_param($stmt, "sss", $name, $email, $id);

    if (mysqli_stmt_execute($stmt)) {
        http_response_code(200);
        return 'true';
    } else {
        http_response_code(500);
        return 'Internal Server Error';
        error_log("SQL error: " . mysqli_error($conn));
    }
    
    mysqli_stmt_close($stmt);
    mysqli_close($conn);

出于某种原因,我无法在发出请求后更新表中的数据。我在 flutter app 中收到的响应状态码为 200,正文为空。我正在使用 localtunnel 托管 php 文件,所以我不太确定如何查看 php 中的日志以进行调试。

提前感谢任何帮助。

php flutter mysqli
© www.soinside.com 2019 - 2024. All rights reserved.