QA@IT

iOSシミュレータからXAMPPにデータを送っているのですが、MySQLにデータが入らなくて困っています。

1791 PV

開発環境はXAMPP、MySQL、CakePHP、Xcodeです。

ユーザ登録の処理はiOSからXAMPPに行き渡ったのですが(次のような感じ)、
  NSString *user_name = @"m777ff";
NSString *password = @"col42w3f";
NSString *body = [NSString stringWithFormat:@"user_name=%@&password=%@", user_name, password];

位置情報の処理が上手く行かない状況です。
以下にソースを載せます。

//iOS側
  NSURL *url = [NSURL URLWithString:@"http://localhost/locations/index"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
request.HTTPMethod = @"POST";
NSString *user_id = @"1";
NSString *lat= @"31.30";
NSString *lng = @"9.780";
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側
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);
}
}

・ちなみにビューを作ってそこからForm->inputでデータがMySQLに入ることは確認済みです。

//MySQL側
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;

なにかお気づきの点がありましたら是非アドバイスをよろしくお願いします。
他に、緯度-90から90・経度-180から180の範囲指定の書き方をご存知でしたら加えてコメントをお寄せください。

ウォッチ

この質問への回答やコメントをメールでお知らせします。