【问题标题】:How can insert data to MySQL in Swift 3 via Alamofire?如何通过 Alamofire 在 Swift 3 中向 MySQL 插入数据?
【发布时间】: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 我不明白。

标签: php ios mysql swift3 alamofire


【解决方案1】:

如果不考虑 SQL 注入 攻击,我认为 SQL 中的问题是缺少值的单引号。改进:

$q="INSERT INTO users (name, email) VALUES (\'$name\',\'$email\')";

【讨论】:

    【解决方案2】:

    使用它并检查列名和类型

    INSERT INTO users (name, email) VALUES('abcd', 'abcd@mail.com')
    

    【讨论】:

    • 这只是一个例子,所以我提到了 AccountDetails
    猜你喜欢
    • 2015-02-17
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多