已结束。此问题是
not reproducible or was caused by typos .它目前不接受答案。
Best Answer-推荐答案 strong>
一些想法:
在失败时,你应该将 message
设置为 $mysqli->error
而不仅仅是 "FAILURE!"
,所以你可以看到失败的原因。
我建议您在尝试查询之前移动“是否连接失败”逻辑。我还建议您将其更改为输出表示连接失败并退出的 JSON,而不仅仅是执行 die
。稍后,当您改进 Swift 代码以解析错误时,将所有服务器消息保存为 JSON 会很有用。
您应该更改 PHP 以使用 real_escape_string 转义参数.否则,如果您的任何值包含 '
字符,您的 SQL 将失败。 (您也容易受到 SQL 注入(inject)攻击。)
您应该更改 Swift 以百分比转义请求的 httpBody
中包含的值。见 https://stackoverflow.com/a/28027627/1271826举些例子。或者使用像 Alamofire 这样的东西来为你解决这个问题。但就目前而言:
如果这些值中的任何一个包含 +
字符,它可能会被替换为空格。
如果这些值中的任何一个包含 &
字符,则最终会截断该字段。
如果这些值中的任何一个包含任何其他保留字符,则整个查询可能会失败。
虽然不是必需的,但我建议:
在 Swift 代码中,将请求的 Content-Type
header 设置为 application/x-www-form-urlencoded
和 Accept
对 application/json
的请求的 header 。
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.setValue("application/json", forHTTPHeaderField: "Accept")
在 PHP 代码中,在 echo
JSON 之前将 Content-Type
header 设置为 application/json
:
header("Content-Type: application/json");
虽然这是可选的,但如果您以后采用像 Alamofire 这样的库来对这些标准 header 执行验证,它会让您的生活更轻松。
关于php - POST 不工作 SWIFT PHP,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/47953114/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) |
Powered by Discuz! X3.4 |