Данные Swift httppost, не вставляемые в базу данных MySQL

Я пытаюсь отправить данные на php и вставить его в базу данных mysql, но он, похоже, не работает. Я попытался отправить данные на php только для того, чтобы закодировать его на json и вернуть его обратно в swift, и он возвращает результат, поэтому это означает, что файл php получил данные. Однако вставка данных не работает.

swift2 httppost

func post() { let myUrl = NSURL(string: "http://localhost:8080/json/json.php"); let request = NSMutableURLRequest(URL:myUrl!); request.HTTPMethod = "POST" // Compose a query string let postString = "firstName=James&lastName=Bond"; request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding); let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in if error != nil { print("error=\(error)") return } // You can print out response object print("response = \(response)") // Print out response body let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) print("responseString = \(responseString)") //Let's convert response sent from a server side script to a NSDictionary object: do{ let myJSON = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableLeaves) as? NSDictionary if let parseJSON = myJSON { // Now we can access value of First Name by its key let firstNameValue = parseJSON["firstName"] as? String print("firstNameValue: \(firstNameValue)") } }catch let error as NSError { print("JSON Error: \(error.localizedDescription)") } } task.resume() } 

json.php

 <?php // Read request parameters $firstName= $_REQUEST["firstName"]; $lastName = $_REQUEST["lastName"];// Store values in an array $conn = mysqli("localhost", "root", "root", "notify"); $query = mysqli_query($conn, "INSERT INTO user values('', '$firstName', '$lastName')"); ?> 

Если сервер просто выполняет эхо-запрос, то проблема лежит на сервере, а не на клиентском коде. Я бы предложил добавить некоторые ошибки в PHP-код:

 <?php // specify that this will return JSON header('Content-type: application/json'); // open database $con = mysqli_connect("localhost","user","password","notify"); // Check connection if (mysqli_connect_errno()) { echo json_encode(array("success" => false, "message" => mysqli_connect_error(), "sqlerrno" => mysqli_connect_errno())); exit; } // get the parameters $field1 = mysqli_real_escape_string($con, $_REQUEST["firstName"]); $field2 = mysqli_real_escape_string($con, $_REQUEST["lastName"]); // perform the insert $sql = "INSERT INTO user (first_name, last_name) VALUES ('{$field1}', '{$field2}')"; if (!mysqli_query($con, $sql)) { $response = array("success" => false, "message" => mysqli_error($con), "sqlerrno" => mysqli_errno($con), "sqlstate" => mysqli_sqlstate($con)); } else { $response = array("success" => true); } echo json_encode($response); mysqli_close($con); ?> 

Заметки:

  1. Я бы не рекомендовал войти в систему под root .

  2. Убедитесь, что вы используете mysqli_real_escape_string для защиты от атак SQL-инъекций (см. Пункт 1).

  3. Я не знаю, есть ли в вашей таблице user другие поля, но если это так, вы можете указать имена столбцов в инструкции insert . Даже если у вас есть только эти две колонки, это хороший способ «будущего доказательства» вашего кода.

  4. Заметьте, я изменил это, чтобы генерировать ответ JSON. Я делаю это, потому что это упрощает код клиента для анализа и обработки ответа. Я оставлю вам NSJSONSerialization .