Mysql
 sql >> Base de données >  >> RDS >> Mysql

Les données Swift httppost ne s'insèrent pas dans la base de données MySQL

Si le fait que le serveur fasse simplement écho à la demande fonctionne, le problème réside dans le serveur, pas dans le code client. Je suggérerais d'ajouter une gestion des erreurs dans le code 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);

?>

Remarques :

  1. Je ne recommanderais pas de vous connecter en tant que root .

  2. Assurez-vous d'utiliser mysqli_real_escape_string pour vous protéger des attaques par injection SQL (voir point 1).

  3. Je ne sais pas si votre user table contient d'autres champs, mais si c'est le cas, vous pouvez spécifier les noms de colonne dans le insert déclaration. Même si vous n'avez que ces deux colonnes, c'est un bon moyen de « pérenniser » votre code.

  4. Remarque, j'ai changé cela pour générer une réponse JSON. Je le fais parce que cela facilite l'analyse et la gestion de la réponse par le code client. Je vais laisser le NSJSONSerialization à vous.