簡體   English   中英

Flutter:在php中使用POST方法將textfield數據插入MYSQL數據庫

[英]Flutter: insert textfield data into the MYSQL database using POST method in php

我嘗試使用 PHP post 方法將我的文本字段數據插入到 MYSQL 數據庫中。 這是我的保存數據代碼。

POST 方法顯示此未定義索引:visitor_name in

數據庫連接成功 GET data works 在 List View 中正確獲取數據 getdata 沒有問題 function 但是 save data Funtion Not Working


class Homepage extends StatefulWidget {
  const Homepage({Key? key}) : super(key: key);

  @override
  State<Homepage> createState() => _HomepageState();
}

class _HomepageState extends State<Homepage> {
  @override
  Widget build(BuildContext context) {
    TextEditingController txtVname = TextEditingController();
    TextEditingController txtVnumber = TextEditingController();
    TextEditingController txtvemail = TextEditingController();
    TextEditingController txtvReason = TextEditingController();
    TextEditingController txtename = TextEditingController();
    TextEditingController txtRole = TextEditingController();
    TextEditingController txtemail = TextEditingController();

    bool _valvname = false;
    bool _valvnumber = false;
    bool _valvemail = false;
    bool _valvReason = false;
    bool _valename = false;
    bool _valRole = false;
    bool _valemail = false;

    bool visible = false;

    Future insertData() async {
      setState(() {
        visible = true;
      });

      String visitor_name = txtVname.text;
      String visitor_num = txtVnumber.text;
      String visitor_email = txtemail.text;
      String visitor_Reason = txtvReason.text;
      String emp_name = txtename.text;
      String emp_Role = txtRole.text;
      String emp_email = txtemail.text;

      var Data = {
        'visitor_name': visitor_name,
        'visitor_num': visitor_num,
        'visitor_email': visitor_email,
        'visitor_Reason': visitor_Reason,
        'emp_name': emp_name,
        'emp_Role': emp_Role,
        'emp_email': emp_email,
      };
      var url = "https://astatic-scab.000webhostapp.com/vsave.php";
      var res = await http.post(Uri.parse(url), body: jsonEncode(Data));
      var message = jsonDecode(res.body);
      if (message == "true") {
        print("Successful " + message);
      } else {
        print("Error: " + message);
      }
    }


和我的 PHP 代碼

<?php
include "config.php";
$visitor_name=$_POST['visitor_name'];
$visitor_num=$_POST['visitor_num'];
$visitor_email=$_POST['visitor_email'];
$visitor_Reason=$_POST['visitor_Reason'];
$emp_name=$_POST['emp_name'];
$emp_Role=$_POST['emp_Role'];
$emp_email=$_POST['emp_email'];


if($visitor_name!="" && $visitor_num!="" && $visitor_email!="" && $visitor_Reason!="" && $emp_name!="" && $emp_Role!="" && $emp_email!="" ){
$sql="insert into Enquiry (visitor_name,visitor_num,visitor_email,visitor_Reason,emp_name,emp_Role,emp_email) values('$visitor_name','$visitor_num','$visitor_email','$visitor_Reason','$emp_name','$emp_Role',$emp_email');";
if ($con->query($sql)){
echo "true";
}else{
echo "false";
}
}
?>

這是我的一些文本字段代碼,我為所有文本輸入都做了這個

children: [
                                TextField(
                                  controller: txtVname,
                                  decoration: InputDecoration(
                                      errorText: _valvname
                                          ? 'Please fill the detail'
                                          : null,
                                      labelText: "Visitors Name",
                                      labelStyle: const TextStyle(
                                          color: Color(0xff6D6C6CFF))),
                                ),
                                TextField(
                                  controller: txtVnumber,
                                  decoration: InputDecoration(
                                    labelText: "Visitors Mobile Number",
                                    labelStyle: const TextStyle(
                                        color: const Color(0xff6D6C6CFF)),
                                    errorText:
                                        _valvnumber ? 'Can\'t be Empty' : null,
                                  ),
                                ),
                              

這是我的桌子

錯誤消息是當我單擊提交按鈕時,錯誤消息顯示我不知道在哪里尋找錯誤。

E/flutter (13778): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: FormatException: Unexpected character (at character 1)
E/flutter (13778): <br />
E/flutter (13778): ^
E/flutter (13778): 
E/flutter (13778): #0      _ChunkedJsonParser.fail (dart:convert-patch/convert_patch.dart:1405:5)
E/flutter (13778): #1      _ChunkedJsonParser.parseNumber (dart:convert-patch/convert_patch.dart:1272:9)
E/flutter (13778): #2      _ChunkedJsonParser.parse (dart:convert-patch/convert_patch.dart:937:22)
E/flutter (13778): #3      _parseJson (dart:convert-patch/convert_patch.dart:40:10)
E/flutter (13778): #4      JsonDecoder.convert (dart:convert/json.dart:612:36)
E/flutter (13778): #5      JsonCodec.decode (dart:convert/json.dart:216:41)
E/flutter (13778): #6      jsonDecode (dart:convert/json.dart:155:10)
E/flutter (13778): #7      _HomepageState.build.insertData (package:vms_1/Home_Page.dart:67:21)
E/flutter (13778): <asynchronous suspension>
E/flutter (13778): 

這就是 PHP 顯示的內容


Notice: Undefined index: visitor_name in /storage/ssd4/645/18700645/public_html/vsave.php on line 3

Notice: Undefined index: visitor_num in /storage/ssd4/645/18700645/public_html/vsave.php on line 4

Notice: Undefined index: visitor_email in /storage/ssd4/645/18700645/public_html/vsave.php on line 5

Notice: Undefined index: visitor_Reason in /storage/ssd4/645/18700645/public_html/vsave.php on line 6

Notice: Undefined index: emp_name in /storage/ssd4/645/18700645/public_html/vsave.php on line 7

Notice: Undefined index: emp_Role in /storage/ssd4/645/18700645/public_html/vsave.php on line 8

Notice: Undefined index: emp_email in /storage/ssd4/645/18700645/public_html/vsave.php on line 9

這也是


W/IInputConnectionWrapper( 8071): getTextBeforeCursor on inactive InputConnection
I/AssistStructure( 8071): Flattened final assist data: 388 bytes, containing 1 windows, 3 views
W/IInputConnectionWrapper( 8071): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper( 8071): getSelectedText on inactive InputConnection

讓我們首先解決您的 API 問題。請嘗試格式化您的insertData() function 類似於:

Future insertData() async {
  setState(() {
    visible = true;
  });
  
  var url = "https://astatic-scab.000webhostapp.com/vsave.php";
  var response = await http.post(
    Uri.parse(url),
    body: {
      "visitor_name": txtVname.text.toString(),
      "visitor_num": txtVnumber.text.toString(),
      "visitor_email": txtemail.text.toString(),
      "visitor_Reason": txtvReason.text.toString(),
      "emp_name": txtename.text.toString(),
      "emp_Role": txtRole.text.toString(),
      "emp_email": txtemail.text.toString(),
    },
  );
  var message = jsonDecode(res.body);
  if (message == "true") {
    print("Successful " + message);
  } else {
    print("Error: " + message);
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM