如何通过 Alamofire 在 Swift 3 中向 MySQL 插入数据?
Posted
技术标签:
【中文标题】如何通过 Alamofire 在 Swift 3 中向 MySQL 插入数据?【英文标题】:How can insert data to MySQL in Swift 3 via Alamofire? 【发布时间】:2017-02-09 12:58:53 【问题描述】:我想在 mysql 中保存数据。我正在使用 php 和我的代码:
<?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 和我的代码:
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)")
当我运行 Xcode 时,我收到了这个错误:
Response: Optional("\"error\":true,\"message\":\"Error: INSERT INTO users (name, email) VALUES (xxxx,yyyy)<br>\"")
我的代码有什么问题?
【问题讨论】:
对于初学者来说,它很容易受到 SQL 注入 攻击。使用参数化语句来保护自己,同时自动解决您的问题,因为使用参数化语句,您不再需要将字符串值括在引号中。 @FranzGleichmann 我不明白。 【参考方案1】:如果不考虑 SQL 注入 攻击,我认为 SQL 中的问题是缺少值的单引号。改进:
$q="INSERT INTO users (name, email) VALUES (\'$name\',\'$email\')";
【讨论】:
【参考方案2】:使用它并检查列名和类型
INSERT INTO users (name, email) VALUES('abcd', 'abcd@mail.com')
【讨论】:
这只是一个例子,所以我提到了 AccountDetails以上是关于如何通过 Alamofire 在 Swift 3 中向 MySQL 插入数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Alamofire 4 和 Swift 3 中设置方法、标题、参数
如何在 Alamofire 请求 swift 3 上发出警报
如何在 Alamofire,swift 3 中将字典作为参数发送
如何在 Swift 3 中使用 Alamofire 4 解析这个 json?