7 способов получить базу данных MySQL во Flutter с использованием PHP

При разработке приложений Flutter интеграция базы данных MySQL с серверной частью PHP является общим требованием. В этой статье будут рассмотрены несколько методов получения данных из базы данных MySQL во Flutter с использованием PHP. Каждый метод сопровождается примерами кода, которые помогут вам понять процесс реализации. Давайте погрузимся!

Метод 1: использование пакета HTTP
Пример кода:

import 'dart:convert';
import 'package:http/http.dart' as http;
Future<List<dynamic>> fetchData() async {
  final response = await http.post(
    Uri.parse('http://your-php-api-endpoint'),
  );
  if (response.statusCode == 200) {
    final jsonData = jsonDecode(response.body);
    return jsonData;
  } else {
    throw Exception('Failed to fetch data');
  }
}

Метод 2: использование пакета Dio
Пример кода:

import 'package:dio/dio.dart';
Future<List<dynamic>> fetchData() async {
  final dio = Dio();
  final response = await dio.post('http://your-php-api-endpoint');
  if (response.statusCode == 200) {
    return response.data;
  } else {
    throw Exception('Failed to fetch data');
  }
}

Метод 3: использование библиотеки Flutter MySQL
Пример кода:

import 'package:flutter_mysql/flutter_mysql.dart';
Future<List<dynamic>> fetchData() async {
  final mySqlConnection = MySqlConnection(
    host: 'your-host',
    port: 3306,
    user: 'your-username',
    password: 'your-password',
    db: 'your-database',
  );
  await mySqlConnection.open();
  final results =
      await mySqlConnection.execute('SELECT * FROM your-table');
  await mySqlConnection.close();
  return results;
}

Метод 4. Использование синхронизированных HTTP-запросов
Пример кода:

import 'package:synchronized/synchronized.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
List<dynamic> fetchData() {
  final lock = Lock();
  List<dynamic> data;
  lock.synchronized(() async {
    final response = await http.post(
      Uri.parse('http://your-php-api-endpoint'),
    );
    if (response.statusCode == 200) {
      data = jsonDecode(response.body);
    }
  });
  return data;
}

Метод 5: использование операций MySQL CRUD
Пример кода:

<?php
$servername = "your-servername";
$username = "your-username";
$password = "your-password";
$dbname = "your-database";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM your-table";
$result = $conn->query($sql);
$data = array();
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        $data[] = $row;
    }
}
$conn->close();
echo json_encode($data);
?>

Метод 6: использование пакета модернизации
Пример кода:

import 'package:retrofit/http.dart';
import 'package:dio/dio.dart';
part 'api_service.g.dart';
@RestApi(baseUrl: "http://your-php-api-endpoint")
abstract class ApiService {
  factory ApiService(Dio dio, {String baseUrl}) = _ApiService;
  @POST("/")
  Future<List<dynamic>> fetchData();
}

Метод 7: использование GraphQL
Пример кода:

import 'package:graphql/client.dart';
Future<List<dynamic>> fetchData() async {
  final link = HttpLink('http://your-php-api-endpoint');
  final client = GraphQLClient(cache: GraphQLCache(), link: link);
  final query = gql('''
    query {
      yourTable {
        id
        name
        ...
      }
    }
  ''');
  final result = await client.query(query);
  if (result.hasException) {
    throw Exception('Failed to fetch data');
  }
  final data = result.data?['yourTable'];
  return data;
}

В этой статье мы рассмотрели семь различных методов получения данных из базы данных MySQL в приложении Flutter с использованием PHP. Каждый метод предлагает уникальный подход с примерами кода, что позволяет вам выбрать тот, который соответствует требованиям вашего проекта. Реализуя эти методы, вы можете создавать мощные и эффективные приложения Flutter с интеграцией базы данных MySQL.