Создание задачи для POST-запроса к PHP-скрипту для добавления записей в базу данных MySQL - PullRequest
0 голосов
/ 05 мая 2019

Я хотел бы реализовать приложение IOS через swift 5 для настройки базы данных MySQL, запускаемой сценарием PHP. Я пытаюсь использовать почтовый запрос для передачи следующих параметров: teamName = "Testteam" teamCount = "member"

После некоторого тестирования я обнаружил, что параметры не передаются PHP-скрипту (они пусты), и я не знаю почему.


Swift Code

    let URL_SAVE_TEAM ="http://www.mydomain.de/createteam.php"

    @IBOutlet weak var textFieldName: UITextField!
    @IBOutlet weak var textFieldMember: UITextField!

    @IBAction func Login(_ sender: UIButton) {

        //created NSURL
        let requestURL = NSURL(string: URL_SAVE_TEAM)!

        //creating NSMutableURLRequest
        let request = NSMutableURLRequest(url: requestURL as URL)

        //setting the method to post
        request.httpMethod = "POST"

        //getting values from text fields
        let teamName = textFieldName.text
        let memberCount = textFieldMember.text

        //creating the post parameter by concatenating the keys and values from text field
        //let postParameters = "name="+teamName!+"&member="+memberCount!;

        //adding the parameters to request body
        request.httpBody = postParameters.data(using: String.Encoding.utf8)

        //creating a task to send the post request
        let task = URLSession.shared.dataTask(with: request as URLRequest) {
            (data, response, error) in

            if error != nil {
                print("error is \(String(describing: error))")
                return
            }

            do { //parsing the response
                let myJSON = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary //converting resonse to NSDictionary
                print(myJSON)
                //parsing the json
                if let parseJSON = myJSON {

                    //creating a string
                    var msg : String!

                    //getting the json response
                    msg = parseJSON["message"] as! String?

                    //printing the response
                    print(msg!)
                }
            } catch {
                print(error)
            }

        }
        //executing the task
        task.resume()
    } 

PHP скрипт на сервере

<?php 
   //creating response array
   $response = array();

   if($_SERVER['REQUEST_METHOD']=='POST'){

    //getting values
    $teamName = $_GET['name'];
    $memberCount = $_GET['member'];

    $fp = fopen ('debug.log' , "w"); // Datei öffnen
    fwrite ($fp , 'test'); // Dateiinhalt in die Datei schreiben
    fwrite ($fp , $teamName); // Dateiinhalt in die Datei schreiben
    fwrite ($fp , $memberCount); // Dateiinhalt in die Datei schreiben
    fclose ($fp); // Datei schließen

    //including the db operation file
    require_once '../includes/DbOperation.php';

    $db = new DbOperation();

    //inserting values 
    if($db->createTeam($teamName,$memberCount)){
        $response['error']=false;
        $response['message']='Team added successfully';
    }else{

        $response['error']=true;
        $response['message']='Could not add team';
    }

}else{
    $response['error']=true;
    $response['message']='You are not authorized';
}
echo json_encode($response);
?>

PHP-скрипт отправляет сообщение об ошибке (не удалось добавить команду), поскольку переменные $ teamName и $ memberCount пусты. Общее подключение к сценарию PHP, похоже, работает.

1 Ответ

2 голосов
/ 05 мая 2019

Вы используете метод POST, поэтому вы должны получить значения POST, а не значения GET:

if($_SERVER['REQUEST_METHOD']=='POST'){

    //getting values
    $teamName = $_POST['name'];
    $memberCount = $_POST['member'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...