php - Xcode 8.3从php和json获取数据

标签 php mysql json swift xcode

我正在尝试制作一个小程序,将用户名发送到网络数据库。并获取用户的姓名、状态、积分。 我已经知道如何发送用户名并获取 json 输出。 它看起来像这样:{“name”:“gert”,“status”:“0”,“point”:“20”} 这是我的 php 代码

<?php
header('Content-type: application/json');
ob_start();
session_start();
mysql_connect("host","username","password");
mysql_select_db("dbname") or die("Unable to select database");

$qrcode = $_POST['username'];


$result = mysql_query("SELECT * FROM qrcode WHERE qrcode = '$qrcode' ");
$pic_name = mysql_fetch_array($result);

$myObj = new \stdClass();
                $myObj->name = $pic_name['name'];
                $myObj->status = $pic_name['status'];
                $myObj->point = $pic_name['point'];

                $myJSON = json_encode($myObj);

                echo $myJSON;

ob_end_flush();
?>

这是我的快速代码

import UIKit

class ViewController: UIViewController {

let url_to_request:String = "http://www.hholm.dk/time_app/gertqrcode.php"

override func viewDidLoad() {
    super.viewDidLoad()

    download_request()

      }

func download_request()
{
    let url:URL = URL(string: url_to_request)!
    let session = URLSession.shared

    let request = NSMutableURLRequest(url: url)
    request.httpMethod = "POST"
    request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringCacheData

    let paramString = "username=200"
    request.httpBody = paramString.data(using: String.Encoding.utf8)


    let task = session.downloadTask(with: request as URLRequest, completionHandler: {
        (
        location, response, error) in


        let urlContents = try! NSString(contentsOf: location!, encoding: String.Encoding.utf8.rawValue)

        guard let _:NSString = urlContents else {
            print("error")
            return
        }

        print(urlContents)


    }) 

    task.resume()

}


}

现在我必须提取 json,(我认为它被称为) 我想要名称、状态和要点,因为我可以在程序的其余部分使用一些功能。

最佳答案

试试吧。 如果您有任何疑问请告诉我,希望对您有所帮助!

import Foundation
import UIKit

class getJSON: NSObject, URLSessionDataDelegate
{
    //properties
    var data : NSMutableData = NSMutableData()

    func downloadItems(user:String)
    {
        let url = NSMutableURLRequest(url: NSURL(string: "http://192.168.1.102:8888/test/test.php")! as URL)
        url.httpMethod = "POST"
        let postString = "a=\(user)"
        url.httpBody = postString.data(using: String.Encoding.utf8)
        print(url.httpBody = postString.data(using: String.Encoding.utf8))

        var session: URLSession!
        let configuration = URLSessionConfiguration.default

        session = URLSession(configuration: configuration, delegate: self, delegateQueue: nil)

        let task = session.dataTask(with: url as URLRequest)

        task.resume()

    }



    func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data)
    {
        self.data.append(data as Data);
    }



    func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?)
    {
        if error != nil
        {
            print("Not Found", error ??)

        }
        else
        {
            print("Ok")
            self.parseJSON()
        }

    }


    func parseJSON()
    {

        var jsonResult: NSArray = NSArray()

        do
        {
            jsonResult = try JSONSerialization.jsonObject(with: self.data as Data, options:JSONSerialization.ReadingOptions.allowFragments) as! NSArray

            print("jsonResult.count",jsonResult.count)
        }
        catch let error as NSError
        {
            print("jsonResult: ", error)
        }


        var jsonElement: NSDictionary = NSDictionary()
        var contador = 0
        for i in (0..<jsonResult.count)
        {
            jsonElement = jsonResult[i] as! NSDictionary

            if let nameUser = jsonElement["name"] as? String,
                let pointUser = jsonElement["point"] as? String,
                let statusUser = jsonElement["status"] as? String
            {
                print("Name: ", nameUser)
                print("Status: ", statusUser)
                print("Point: ", pointUser)
            }

        }
    }

}

在你的 php 中尝试这个,我向你展示我如何让它为我工作,它需要根据你的意愿进行更改,我将传递此代码作为示例。

<?php
header('Content-type: application/json');
ob_start();
session_start();
mysql_connect("host","username","password");
mysql_select_db("dbname") or die("Unable to select database");

$qrcode = $_POST['username'];


        $query="SELECT name,status,point FROM qrcode WHERE qrcode = '$qrcode'";

        $resultset = mysql_query($query, $connection);

        $data = array();
        while ($row = mysql_fetch_assoc($resultset))
        {
             $data[] = $row;
        }

        //echo '<pre>',print_r($data),'</pre>';

        echo json_encode($data);        




ob_end_flush();
?>

在你的 View Controller 中:

import UIKit

class ViewController: UIViewController 
{
    override func viewDidLoad()
    {
        super.viewDidLoad()

        print("Status: ",getStatusUSer)
    }

    @IBAction func get(_ sender: Any)
    {
        let userName = "charles"
        let getUser  = getJSON()
        getUser.downloadItems(user:userName)
    }

    //Your Code...
}

关于php - Xcode 8.3从php和json获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44709643/

相关文章:

php - 从数据库中获取上一个条目

php - 当我包含特殊字符串时,Wordpress 不会解析 JSON

java - 如何使用 AsyncHttpClient 发送 JSON 正文?

java - 编辑从解析的 JSON 字符串中检索到的字符串

php - CSS 网格,4 个大列,3 个中等

javascript - 如何用 JSON 的返回值填充 FIXED 表的特定位置?

php - Mysql根据相对距离查询GPS经纬度列的方法

mysql, sql 仅在找到记录时更新

php - 如何在 Opencart 的 GridView 中增加产品图像尺寸?

mysql - Ef 到 MySql 创建一个额外的列