Php 如何将内部SQLite数据库中的数据与MySQL数据库同步(链接、匹配)?

Php 如何将内部SQLite数据库中的数据与MySQL数据库同步(链接、匹配)?,php,mysql,json,flutter,sqflite,Php,Mysql,Json,Flutter,Sqflite,在MySQL中获取问题时,我希望将学生的级别和学生的类(SQFLite)与学生的级别和学生的类(MySQL)相匹配 我有一个外部MySQL数据库(localhost),其中包含一个“问题”表,以其级别(简单、中等、困难)和类别(第一类、第二类、第三类)为特征。我有一个内部数据库(SQFLite),其中包含一个“students”表,该表具有外部MySQL数据库中包含的level和class属性。我只想发布与已添加到内部数据库“SQFLite”中的学生的级别和班级相对应的问题 问题:我以JSON格

在MySQL中获取问题时,我希望将学生的级别和学生的类(SQFLite)与学生的级别和学生的类(MySQL)相匹配

我有一个外部MySQL数据库(localhost),其中包含一个“问题”表,以其级别(简单、中等、困难)和类别(第一类、第二类、第三类)为特征。我有一个内部数据库(SQFLite),其中包含一个“students”表,该表具有外部MySQL数据库中包含的level和class属性。我只想发布与已添加到内部数据库“SQFLite”中的学生的级别和班级相对应的问题

问题:我以JSON格式发布了所有问题,但与当前添加的学生的级别和班级不匹配

要求:我希望当我在内部数据库“SQFLite”中添加一个新学生及其级别和班级时,显示的问题必须与该学生的问题相匹配

Try.php:获取json格式的问题

<?php
header("Content-type: application/json; charset=utf-8");
try{
$conn = new PDO('mysql:host=localhost;dbname=relations;charset=utf8','root','');
$conn ->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $exc){
    echo $exc->getMessage();
    die("could not connect");
}
?>

<?php
$makeQuery ="SELECT * FROM questions ";
$stamement = $conn-> prepare($makeQuery);
$stamement -> execute();
$myarray = array();
while ($resultsFrom = $stamement->fetch()){
    array_push(
        $myarray,array(
        "idques"=>intval($resultsFrom['idques']),
        "description"=>$resultsFrom['description'] 
        )
    );
}
echo json_encode($myarray);
?>

模型。省道:包含学生的模型

class Student {
  int _id;
  String _name;
  String _level;
  String _classes ;
  String _date;

  Student(this._name, this._level, this._classes, this._date);
  Student.withId(this._id, this._name, this._level, this._classes ,this._date);

  String get date => _date;
  String get level => _level;
  String get classes => _classes;
  String get name => _name;
  int get id => _id;

  set date(String value) {
    _date = value;
  }
  set level(String value) {
      _level = value;
  }
  set classes(String value) {
    _classes = value;
  }
  set name(String value) {
    if (value.length <= 255) {
      _name = value;
    }
  }

  Map<String, dynamic> toMap() {
    var map = Map<String, dynamic>();
    map["id"] = this._id;
    map["name"] = this._name;
    map["level"] = this._level;
    map["classes"] = this._classes;
    map["date"] = this._date;
    return map;
  }

  Student.getMap(Map<String, dynamic> map){
    this._id = map["id"];
    this._name = map["name"];
    this._level = map["level"];
    this._classes= map["classes"];
    this._date = map["date"];
  }
}
班级学生{
内部id;
字符串\u名称;
串级;
字符串类;
字符串\u日期;
学生(此._姓名,此._级别,此._班级,此._日期);
学生id(此.\u id,此.\u姓名,此.\u级别,此.\u班级,此.\u日期);
字符串get date=>\u date;
字符串get-level=>\u-level;
字符串get classes=>\u classes;
字符串get name=>\u name;
int get id=>\u id;
设置日期(字符串值){
_日期=价值;
}
设置级别(字符串值){
_级别=值;
}
设置类(字符串值){
_类别=价值;
}
集合名称(字符串值){
if(value.length分隔符)(
颜色:颜色,靛蓝,
),
itemCount:snap.length,
itemBuilder:(上下文,索引){
返回列表块(
标题:正文(
“${snap[index]['description']}”,样式:TextStyle(fontSize:18.0)),
领先:图标(图标。问题\答案,颜色:Colors.green,大小:20,),
);
},
);
},
),
);
}
}
import 'package:sqflite/sqflite.dart';
import 'dart:async';
import 'dart:io';
import 'model.dart';
import 'package:path_provider/path_provider.dart';

class SQL_Helper {
  static SQL_Helper dbHelper;
  static Database _database;

  SQL_Helper._createInstance();
  factory SQL_Helper() {
    if (dbHelper == null) {
      dbHelper = SQL_Helper._createInstance();
    }
    return dbHelper;
  }

  String tableName = "students_table";
  String _id = "id";
  String __name = "name";
  String __level= "level";
  String __classes = "classes";
  String __date = "date";

  Future<Database> get database async {
    if (_database == null){
      _database = await initializedDatabase();
    }
    return _database;
  }

  Future<Database> initializedDatabase() async {
    Directory directory = await getApplicationDocumentsDirectory();
    String path = directory.path + "students.db";
    var studentDB = await openDatabase(path, version: 1, onCreate: createDatabase);
    return studentDB;
  }

  void createDatabase(Database db, int version) async {
    await db.execute(
        "CREATE TABLE $tableName($_id INTEGER PRIMARY KEY AUTOINCREMENT, $__name TEXT, $__level TEXT,$__classes TEXT, $__date TEXT )");
  }

  Future<List<Map<String, dynamic>>> getStudentMapList() async {
    Database db = await this.database;
    var result = await db.query(tableName, orderBy: "$_id ASC");
    return result;
  }

  Future<int> insertStudent(Student student) async {
    Database db = await this.database;
    var result = await db.insert(tableName, student.toMap());
    return result;
  }

  Future<int> updateStudent(Student student) async{
    Database db = await this.database;
    var result = await db.update(tableName, student.toMap(), where: "$_id = ?", whereArgs: [student.id]);
    return result;
  }

  Future<int> deleteStudent(int id) async {
    var db = await this.database;
    int result = await db.rawDelete("DELETE FROM $tableName WHERE $_id = $id");
    return result;
  }

  Future<int> getCount() async {
    Database db = await this.database;
    List<Map<String, dynamic>> all = await db.rawQuery("SELECT COUNT (*) FROM $tableName");
    int result = Sqflite.firstIntValue(all);
    return result;
  }

  Future<List<Student>> getStudentList() async{
    var studentMapList = await getStudentMapList();
    int count = studentMapList.length;
    List<Student> students = new List<Student>();
    for (int i = 0; i <= count -1; i++){
      students.add(Student.getMap(studentMapList[i]));
    }
    return students;
  }
}
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';

class Questions extends StatefulWidget {
  @override
  _QuestionsState createState() => _QuestionsState();
}

class _QuestionsState extends State<Questions> {
  getMethod()async{
    String theUrl = 'http://10.0.2.2/Try/Try.php';
    var res = await http.get(Uri.encodeFull(theUrl),headers:{"Accept":"application/json"});
    var responsBody = json.decode(res.body);
    print(responsBody);
    return responsBody;
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: new AppBar(
        title:Text("Questions", style: TextStyle(fontWeight: FontWeight.bold),) ,
        backgroundColor: Colors.blue[700],
      ),
      backgroundColor: Colors.blue[99],
      body:FutureBuilder(
        future: getMethod(),
        builder: (BuildContext context , AsyncSnapshot snapshot){
          List snap = snapshot.data;
          if(snapshot.connectionState == ConnectionState.waiting){
            return Center(
              child: CircularProgressIndicator(),
            );
          }
          if(snapshot.hasError){
            return Center(
              child: Text("Error .... "),
            );
          }
          return ListView.separated(
            separatorBuilder: (context, index) => Divider(
              color: Colors.indigo,
            ),
            itemCount: snap.length,
            itemBuilder: (context,index){
              return ListTile(
                title: Text(
                    "${snap[index]['description']}", style: TextStyle(fontSize: 18.0)),
                leading:Icon(Icons.question_answer, color:Colors.green , size: 20, ) ,
              );
            },
          );
        },
      ),
    );
  }
}