2017-02-09 12 views
0

MySQLにデータを保存したい。私はPHPと私のコードを使用しています:Alamofire経由でSwift 3のMySQLにデータを挿入するにはどうすればいいですか?

<?php 

header('Content-Type: text/html; charset=UTF-8'); 

//Connect to Database 
include "Connect.php"; 

//getting values 
$name = $_POST['name']; 
$email = $_POST['email']; 

//query 
$q="INSERT INTO users (name, email) VALUES ($name,$email)"; 
if (mysqli_query($connection, $q)) { 
    $response['error']=false; 
    $response['message']="New record created successfully"; 
} else { 
    $response['error']=true; 
    $response['message']="Error: " . $q . "<br>" .  mysqli_error($connection); 
} 

echo json_encode($response); 
mysqli_close($connection); 

そして私はAlamofireと私のコードを使用しています:私はXcodeのを実行すると

let parameters: Parameters = [ 
     "name": "xxxx", 
     "email": "yyyy" 
    ] 

    Alamofire.request(api, method: .post, parameters: parameters, encoding: URLEncoding.httpBody).responseJSON { response in 

     if let data = response.data { 
      let json = String(data: data, encoding: String.Encoding.utf8) 
      print("Response: \(json)") 
     } 
    } 

、私はこのエラーを取得しています:

Response: Optional("{\"error\":true,\"message\":\"Error: INSERT INTO users (name, email) VALUES (xxxx,yyyy)<br>\"}") 

私のコードで何が間違っていますか?

+0

初心者の方には、** SQL Injection **の攻撃に対して広く公開されています。パラメータ化されたステートメントでは、文字列値を引用符で*ラップする必要がないため、あなた自身を守るために**パラメータ化されたステートメント**を使用してください。 –

+0

@FranzGleichmann私は分かりません。 – Mayday

答えて

-2

はこれを使用して列名をチェックし、SQLインジェクション攻撃を考慮せずに

INSERT INTO users (name, email) VALUES('abcd', '[email protected]') 
+0

私はAccountDetailsに言及したばかりなので、 –

+0

@GillesGouaillardet私は自分の答えを更新しました。 –

0

を入力し、私はSQLでの問題は、単一引用符は、値のために逃していると思います。改善:

$q="INSERT INTO users (name, email) VALUES (\'$name\',\'$email\')"; 
関連する問題