質問内容
Xcodeにて、DBからJSONファイルを受信した際、エラーが発生します。
うまく受信したファイルを変数に格納したいのですが、
DB周りにお詳しい方、ご教示頂ければ幸いです。
宜しくお願い致します。
下記、コードでは、変数に格納している「nameid」の「001」を元に
DB参照を実施し、DB内にて、「001」と紐付いている「東京」を取得して、
XcodeにJsonデータとして渡すようなコードを作成致しております。
発生しているXcodeエラー
Thread 1: signal SIGABRT
該当のソースコード(Xcode/Objective-C)
_nameid= @"001"; AFHTTPSessionManager* manager = [AFHTTPSessionManager manager]; NSDictionary* postparam = @{ @"table_name" : @"m_test", @"addtext1" : _nameid }; [manager POST:@"http://localhost:8888/get.php"//MAMP parameters:postparam progress:nil success:^(NSURLSessionTask* task, id responseObject) { //通信成功 NSLog(@"成功response: %@", responseObject); //取得したデータを格納 _idData = responseObject[@"name"]; NSLog(@“受信したデータ: %@", _idData); } failure:^(NSURLSessionTask* operation, NSError* error) { //通信失敗 NSLog(@"失敗Error: %@", error); }];
データベース(テーブル名:m_test)
nameid,name, 001,東京 002,大阪
コード(DatabaseClass.php)
<?php //内部文字コードを変更 mb_language("uni"); mb_internal_encoding("utf-8"); mb_http_input("auto"); mb_http_output("utf-8"); class Database{ var $dbServer; var $dbName; var $dbUser; var $dbPass; var $link; var $db; var $query; //DB接続 function __construct($db_name) { //DBの情報 $this->dbServer="localhost"; $this->dbName=$db_name; $this->dbUser="test"; $this->dbPass="test"; //ポスグレに接続 $this->link=pg_connect("host={$this->dbServer} dbname={$this->dbName} user={$this->dbUser} password={$this->dbPass}") or die(exit); //UTF-8の文字コードに変更 $this->query=pg_query($this->link,'SET NAMES utf8'); } //DBを閉じる public function close() { return pg_close($this->link); } //読み込むテーブルの選択 public function select($query) { $result=pg_query($query); $row=array(); $row=pg_fetch_assoc($result); return $row; } //指定したクエリの実行 public function query($query) { return pg_query($this->link,$query); } //JSON形式に変換用の出力 public function jsonparse($query) { $row = pg_fetch_object($query); return $row; } } ?>
コード(get.php)
<?php //DatabaseClassを読み込み include_once "DatabaseClass.php"; //テーブル名が選択されているかどうか確認 if($_POST["table_name"] ) { //DB名設定 $db_name = "test"; $database = new Database($db_name); $table_name = $_POST["table_name"]; $sql = ("SELECT * from m_test where nameid = '001' "); //クエリ送信 $query = pg_query($sql); $json= array(); if(strstr($table_name, 'm_test')){ while ($row = $database->jsonparse($query)) { $json[] = array( 'name' => $row->name, ); } } //JSON形式で出力 header("Content-Type: application/json; charset=utf-8"); echo json_encode($json); //DBを閉じる $database->close(); } ?>
試したこと
以下を修正した場合は、JSONデータは受信できますが、
{}などがついたデータが取得される為、その後のユニコードを
UTF8に変換などができませんでした。
どうすれば、{}が無い値のみのデータを取得できますでしょうか?
_idData = responseObject[@"name"];
↓
_idData = responseObject;
■受信できたデータ↓
{ beacon = "\U6771\U4eac"; }
補足情報(FW/ツールのバージョンなど)
PostgreSQL:10.4
PHP:5.6
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。