PHP를 사용하여 Swift에서 온라인 데이터베이스 (mySQL)에 연결합니다. (XCODE)

이번 달

내 xcode 앱을 온라인 데이터베이스에 연결하고 데이터를 가져와 내 앱에 표시하고 내 앱을 사용하여 온라인 데이터베이스에 데이터를 쓰고 싶습니다. 이미 앱을 사용했지만 이제는 오류가 발생합니다.

오류 : 여기에 이미지 설명 입력

내 웹 페이지에 온라인 데이터베이스가 있고 웹의 파일 관리자에 두 개의 PHP 파일을 업로드했습니다. 내 데이터베이스의 모든 데이터를 검색하고 json으로 인코딩하는 하나의 PHP 파일. 그리고 두 번째 PHP 파일은 내 앱에서 온라인 데이터베이스에 데이터를 쓰는 쿼리를 수행합니다.

여기에 이미지 설명 입력

위의 그림에서와 같이 json 출력을 성공적으로 얻었지만 데이터를 xcode의 배열로 가져 오려고 할 때 그 오류가 발생합니다.

이것은 내 코드입니다

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet var tableview: UITableView!
    @IBOutlet var inputFriendName: UITextField!
    @IBOutlet var inputFriendInfo: UITextField!

    var data: NSArray = []

    override func viewDidLoad() {
        super.viewDidLoad()
        data = dataOfJson("http://bishanonline.com/extra/serviceselect.php")
        println(data)

    }

    @IBAction func reload() {
        data = dataOfJson("http://bishanonline.com/extra/serviceselect.php")
        self.tableview.reloadData()
    }

    override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
        self.view.endEditing(true)
    }

    func dataOfJson(url: String) -> NSArray {
        var data = NSData(contentsOfURL: NSURL(string: url)!)
        return (NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: nil) as NSArray)
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return data.count
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var cell: additionInfoCell = self.tableview.dequeueReusableCellWithIdentifier("customCell") as additionInfoCell
        var maindata = (data[indexPath.row] as NSDictionary)
        cell.friendName!.text = maindata["Name"] as? String
        cell.friendInfo!.text = maindata["Additional Info"] as? String
        return cell
    }

    @IBAction func uploadToDatabase() {
        var url: NSString = "http://bishanonline.com/extra/servicequery.php?x=\(inputFriendName.text)&y=\(inputFriendInfo.text)"
        url = url.stringByReplacingOccurrencesOfString(" ", withString: "%20")
        url = url.stringByReplacingOccurrencesOfString("/n", withString: "%0A")
        var data = NSData(contentsOfURL: NSURL(string: url)!)
        var result = NSString(data: data!, encoding: NSUTF8StringEncoding)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

이 코드 라인에 문제가 있습니다.

 func dataOfJson(url: String) -> NSArray {
    var data = NSData(contentsOfURL: NSURL(string: url)!)
    return (NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: nil) as NSArray)
}

json 데이터를 배열로 가져 오도록 도와주세요. 도움을 주셔서 감사합니다.

호이스트 Q

마지막으로 문제가 해결되었습니다. 먼저 정확한 문제를 자세히 설명하고 해결책이 게시됩니다. 당신이하고있는 코드는 완전히 괜찮 았지만 진짜 문제는 당신의 백엔드였습니다.

serviceselect.php의 경우

레코드를 가져 오기 위해 수행 한 코드는 다음과 같습니다.

func dataOfJson(url: String) -> NSArray 
{
   var data = NSData(contentsOfURL: NSURL(string: url)!)
   return (NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: nil) as NSArray)
}
This above method is returing NSArray but the data you are getting from the server is kinda messed up because along with JSON data some garbage data is included as well.Check out the below image

여기에 이미지 설명 입력

따라서 위의 문자열에서 JSON 데이터를 생성하려고하면 충돌과 오류가 발생합니다. 무료 호스팅 서비스로 인해이 메시지가 표시 될 수 있습니다 (확실하지 않음).

해결책

   func getallrecords(){
    let url = NSURL(string: "http://bishanonline.com/extra/serviceselect.php")
    let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
        var d = NSString(data: data, encoding: NSUTF8StringEncoding)
        var arr = d!.componentsSeparatedByString("<") // spliting the incoming string from "<" operator because before that operator is our required data and storing in array
        var dataweneed:NSString = arr[0] as NSString // arr[0] is the data before "<" operator and arr[1] is actually no use for us
         if let data = NSJSONSerialization.JSONObjectWithData(dataweneed.dataUsingEncoding(NSUTF8StringEncoding)!, options: NSJSONReadingOptions.MutableContainers, error: nil) as? NSArray

// JSONObjectWithData는 항상 NSData의 첫 번째 인수를 갖지만 우리의 데이터 는 실제로 NSString이므로 실제로 NSString을 NSData로 변환합니다.

   {
            for dd in data{
                var name : String = dd["Name"]! as String
                var info : String = dd["Additional Info"]! as String
                println("Name is : \(name)") // MainDeveloper for 0 and BestBuddy for 1 index
                println("Info is : \(info)") // Bishan for 0 and AkilaPrabath for 1 index
     }
        }
    }

    task.resume()
    }

최종 출력

Finall 출력

servicequery.php의 경우

   func addrecord(x:String,y:String){
   let request = NSMutableURLRequest(URL: NSURL(string: "http://bishanonline.com/extra/servicequery.php")!)
            var postString : String = "x="+x+"&y="+y
            request.HTTPMethod = "GET"
            request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
            let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
                data, response, error in

                if error != nil {
                    println("error=\(error)")
                    return
                }


                let jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary

                if jsonResult as String == "Successfully added "
                {
                 // Show an alert to notify user
                }
           }
            task.resume()
           }

"echo $ query;"도 제거하십시오. servicequery.php의 30 행

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

안드로이드를 온라인 데이터베이스 (mysql)에 연결하는 방법

분류에서Dev

vb.net을 사용하여 godaddy cpanel에서 온라인 데이터베이스에 연결하는 방법

분류에서Dev

Android에서 PHP 세션을 사용하여 온라인 데이터베이스 업데이트

분류에서Dev

PHP의 localhost에서 온라인 데이터베이스에 연결

분류에서Dev

PHP (xampp / mysql)를 사용하여 특정 데이터베이스에 연결

분류에서Dev

PHP mysqli_connect ()를 사용하여 MySQL 데이터베이스에 연결할 수 없습니다.

분류에서Dev

Php를 사용하여 MYSQL 데이터베이스에 연결할 수 없습니다.

분류에서Dev

여러 오프라인 (LAN 연결) 로컬 데이터베이스에 Microsoft Sync Framework를 사용하십니까?

분류에서Dev

mySQL 데이터베이스를 xcode 프로젝트에 연결하고 싶습니다.

분류에서Dev

Java를 사용하여 VM에서 mysql 데이터베이스에 연결할 수 없습니다.

분류에서Dev

MySQLWorkbench를 사용하여 (원격) MySQL 데이터베이스에 연결하는 데 문제가 있습니다.

분류에서Dev

PHP 7.4를 사용하여 Centos 8에서 mssql 데이터베이스 연결

분류에서Dev

MySQL CLI를 사용하여 한 데이터베이스에서 다른 데이터베이스로 값 복사

분류에서Dev

MySQL CLI를 사용하여 한 데이터베이스에서 다른 데이터베이스로 값 복사

분류에서Dev

XAMPP를 사용하여 데이터베이스에 연결

분류에서Dev

쉘 스크립트를 사용하여 mysql 데이터베이스에 연결할 수 없습니다.

분류에서Dev

Azure에서 ODBC 드라이버를 사용하여 외부 데이터베이스에 연결

분류에서Dev

spring-cloud-aws를 사용하여 RDS 인스턴스에 연결할 때 데이터베이스를 어디에서 지정해야합니까?

분류에서Dev

CA 인증서를 사용하여 Java에서 데이터베이스에 연결하는 방법

분류에서Dev

PHP를 사용하여 MySQL 데이터베이스에 연결 클래스, 삽입, 업데이트, 삭제

분류에서Dev

Workbench를 사용하여 Django를 원격 MySQL 데이터베이스에 연결

분류에서Dev

생산 Laravel 증기를 사용하여 MySQL 데이터베이스에 연결할 수 없습니다

분류에서Dev

PHP를 사용하여 데이터베이스에 연결할 수 없습니다.

분류에서Dev

노드를 사용하여 원격 mysql 데이터베이스에 연결

분류에서Dev

PHP를 사용하여 mysql 데이터베이스에 데이터를 삽입 할 수 없습니다.

분류에서Dev

(PHP, AJAX, JQ)를 사용하여 MySQL 데이터베이스에 데이터를 삽입 할 수 없습니다.

분류에서Dev

Android Volley 라이브러리를 사용하여 MySQL 데이터베이스에서 데이터를 검색하는 것이 너무 느립니다.

분류에서Dev

Spring Boot에서 JDBC 드라이버를 사용하여 Oracle 데이터베이스에 연결할 수 없습니다.

분류에서Dev

xxamp는 PHP를 사용하여 데이터베이스에 연결

Related 관련 기사

  1. 1

    안드로이드를 온라인 데이터베이스 (mysql)에 연결하는 방법

  2. 2

    vb.net을 사용하여 godaddy cpanel에서 온라인 데이터베이스에 연결하는 방법

  3. 3

    Android에서 PHP 세션을 사용하여 온라인 데이터베이스 업데이트

  4. 4

    PHP의 localhost에서 온라인 데이터베이스에 연결

  5. 5

    PHP (xampp / mysql)를 사용하여 특정 데이터베이스에 연결

  6. 6

    PHP mysqli_connect ()를 사용하여 MySQL 데이터베이스에 연결할 수 없습니다.

  7. 7

    Php를 사용하여 MYSQL 데이터베이스에 연결할 수 없습니다.

  8. 8

    여러 오프라인 (LAN 연결) 로컬 데이터베이스에 Microsoft Sync Framework를 사용하십니까?

  9. 9

    mySQL 데이터베이스를 xcode 프로젝트에 연결하고 싶습니다.

  10. 10

    Java를 사용하여 VM에서 mysql 데이터베이스에 연결할 수 없습니다.

  11. 11

    MySQLWorkbench를 사용하여 (원격) MySQL 데이터베이스에 연결하는 데 문제가 있습니다.

  12. 12

    PHP 7.4를 사용하여 Centos 8에서 mssql 데이터베이스 연결

  13. 13

    MySQL CLI를 사용하여 한 데이터베이스에서 다른 데이터베이스로 값 복사

  14. 14

    MySQL CLI를 사용하여 한 데이터베이스에서 다른 데이터베이스로 값 복사

  15. 15

    XAMPP를 사용하여 데이터베이스에 연결

  16. 16

    쉘 스크립트를 사용하여 mysql 데이터베이스에 연결할 수 없습니다.

  17. 17

    Azure에서 ODBC 드라이버를 사용하여 외부 데이터베이스에 연결

  18. 18

    spring-cloud-aws를 사용하여 RDS 인스턴스에 연결할 때 데이터베이스를 어디에서 지정해야합니까?

  19. 19

    CA 인증서를 사용하여 Java에서 데이터베이스에 연결하는 방법

  20. 20

    PHP를 사용하여 MySQL 데이터베이스에 연결 클래스, 삽입, 업데이트, 삭제

  21. 21

    Workbench를 사용하여 Django를 원격 MySQL 데이터베이스에 연결

  22. 22

    생산 Laravel 증기를 사용하여 MySQL 데이터베이스에 연결할 수 없습니다

  23. 23

    PHP를 사용하여 데이터베이스에 연결할 수 없습니다.

  24. 24

    노드를 사용하여 원격 mysql 데이터베이스에 연결

  25. 25

    PHP를 사용하여 mysql 데이터베이스에 데이터를 삽입 할 수 없습니다.

  26. 26

    (PHP, AJAX, JQ)를 사용하여 MySQL 데이터베이스에 데이터를 삽입 할 수 없습니다.

  27. 27

    Android Volley 라이브러리를 사용하여 MySQL 데이터베이스에서 데이터를 검색하는 것이 너무 느립니다.

  28. 28

    Spring Boot에서 JDBC 드라이버를 사용하여 Oracle 데이터베이스에 연결할 수 없습니다.

  29. 29

    xxamp는 PHP를 사용하여 데이터베이스에 연결

뜨겁다태그

보관