iOS シミュレーターから XAMPP にデータ (位置情報を含む) を挿入しようとしました。しかし、私はできません。
アプリケーション開発環境は、XAMPP(Apache, MySQL)、CakePHP(2.3.0)、Xcode 5です。
iOSシミュレーターから次のデータを挿入できました。
NSString *user_name = @"hoge";
NSString *password = @"hogehoge";
NSString *body = [NSString stringWithFormat:@"user_name=%@&password=%@", user_name, password];
しかし、以下のデータは挿入できませんでした。
//iOS side
NSURL *url = [NSURL URLWithString:@"http://macbook.local/locations/index"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
request.HTTPMethod = @"POST";
NSString *user_id = @"1";
NSString *lat= @"31.30";
NSString *lng = @"119.70";
NSString *a_b = @"a";
NSString *body = [NSString stringWithFormat:@"user_id=%@&lat=%@&lng=%@&a_b=%@", user_id, lat, lng, a_b];
request.HTTPBody = [body dataUsingEncoding:NSUTF8StringEncoding];
NSURLConnection *aConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if (!aConnection) {
NSLog(@"connection error.");
}
/* ↑ 別のデータ型 (int user_id %d、double lat %f、double lng %f) を試しましたが、結果は同じです。*/
//CakePHP side
public function index(){
if($this->request->is('post') && !empty($this->request->data)) {
//$this->Stamp->create();
$dbo = $this->Stamp->getDataSource();
if(self::isLat($this->request->data['Location']['lat']) && self::isLng($this->request->data['Location']['lat'])){
$this->request->data['Location']['latlng'] = $dbo->expression(
"GeomFromText('POINT({$this->request->data['Location']['lat']} {$this->request->data['Location']['lng']})')"
);
}
$this->Location->save($this->request->data);
}
}
通常の CakePHP の View(index.ctp) 以下のコードからの挿入が成功することを確認しました。
<h1>submit location</h1>
<?php print(
$this->Form->create('Location') .
$this->Form->input('user_id', array('type' => 'text')) .
$this->Form->input('lat') .
$this->Form->input('lng') .
$this->Form->input('a_b') .
$this->Form->end('Submit')
); ?>
最後は MySQL テーブルです。
//MySQL side
CREATE TABLE locations(
id INTEGER AUTO_INCREMENT,
user_id INTEGER NOT NULL,
latlng GEOMETRY NOT NULL,
created DATETIME,
a_b ENUM('a', 'b'),
PRIMARY KEY(id),
SPATIAL KEY spot_latlng_index(latlng)
) ENGINE = MyISAM;
どの部分が問題だと思いますか?
助けてください、アドバイスをください。