【发布时间】:2020-04-26 11:29:39
【问题描述】:
我正在向 PHP 发送“formKATID”参数。我想发送多个“formKATID”。例如,我想选择数据库中 KATEGORI.ID = 6,7,8 的数据。这就是为什么我在bodyObject 中定义了多个formKATID。但它不是那样工作的。如何提交多个“formKATID”?我用 json_encode 打印“ExistCount”行并尝试通过 swift 提取计数输出,但它带有一个空值。我发送的数组有问题。
PHP
...
$connectionInfo = array( "UID"=>$uid,
"PWD"=>$pwd,
"Database"=>$databaseName);
$conn = sqlsrv_connect($serverName, $connectionInfo);
$formKATID = $_POST['formKATID'];
$tsql = "SELECT ... IN(".implode(', ',$formKATID).")";
$stmt = sqlsrv_query( $conn, $tsql);
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
$paketCount = $row['ExistCount'];
$results[] = Array("Count" => $paketCount);
}
echo json_encode($results, JSON_UNESCAPED_UNICODE);
sqlsrv_free_stmt( $stmt);
?>
...
SWIFT
@objc func kategoriSaydır(){
var request = URLRequest(url: url)
request.setValue("application/json", forHTTPHeaderField: "Accept")
request.httpMethod = "POST"
let bodyObject = ["formKATID": ["6", "7", "8"]] as [String : Any]
request.httpBody = try! JSONSerialization.data(withJSONObject: bodyObject, options: [])
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
// error
return
}
do {
if let baslik = try JSONSerialization.jsonObject(with: data, options: []) as? [[String: Any]] {
for review in baslik {
if let soru_baslik = review["Count"] as? String {
let s = String(describing: soru_baslik)
print("kategoriItemCount", s)
}
}
}
} catch let parseError { ... }
}
task.resume()
}
【问题讨论】:
-
有什么问题?您是否收到响应错误?您的快速代码看起来正确。你打电话给
task.resume()吗? -
我使用 json_encode 打印“ExistCount”行并尝试通过 swift 提取计数输出,但它带有一个空值。我发送的数组有问题。
-
我没有在代码中看到错误。你有一个有效请求的例子吗?您可以使用 Postman 创建请求 - postman.com。
-
当我在 Postman 中尝试时,它返回 null 值,我认为我的 php 代码有问题。但我找不到问题。 @VladislavMarkov
-
我更新了php代码,你能检查一下吗?谢谢你。 @VladislavMarkov