ASIHTTPRequest Issue - Невозможно отправить данные в базу данных - PullRequest
1 голос
/ 06 июля 2011

Я пытаюсь создать целевое приложение C, которое отправляет данные в удаленную базу данных, используя ASIHTTPRequest.В настоящее время я использую MAMP Server и пытаюсь заставить его работать.Файл php работает при запуске в режиме онлайн, но у меня возникают проблемы с тем, чтобы приложение iphone отправляло данные в файл php.Вот мой код:

dbconnect.h

#import <Foundation/Foundation.h>


@interface dbconnect : NSObject {

}

-(void) postToDB:(NSString*) msg;

@end

dbconnect.m

#import "dbconnect.h"
#import "ASIFormDataRequest.h"

@implementation dbconnect

-(void) postToDB:(NSString*) msg{
    NSString *myphp = @"/Applications/MAMP/htdocs/databases/test.php";
    NSURL *url = [NSURL URLWithString:myphp];
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    [request setPostValue:msg forKey:@"message"];
}

@end

main

#import <UIKit/UIKit.h>
#import "dbconnect.h"

int main(int argc, char *argv[]) {
    dbconnect* dbc;
    dbc = [[dbconnect alloc]init];
    [dbc postToDB:@"TESTING"];
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];    
    int retVal = UIApplicationMain(argc, argv, nil, nil);       
    [pool release]; 
    return retVal;
}

php

<?php

//connect to database
function connect() {
  $dbh = mysql_connect ("localhost", "root", "root") or die ('I cannot connect to the database because: ' . mysql_error());
  mysql_select_db("testers", $dbh); 
  return $dbh;
}

//store posted data
if(isset($_POST['message'])){
  $message = $_POST['message'];
  $dbh = connect();
  $query = "INSERT INTO  messages (message) VALUES ('$message')";
  $result = mysql_query( $query ) or die ("didn't query");  
}
?>

Теперь я знаю, что менять основной метод - плохая практика, но я просто хотел создать быстрыйи грязное фиктивное соединение iphone / php, чтобы заставить его работать, и основной метод был самым простым вариантом.Конечно, в реальном приложении я буду использовать представление для запуска таких действий ...

Мой код компилируется и ошибок нет, iOSSimulator загружается ... но в моей базе данных ничего не публикуется ...

РЕДАКТИРОВАТЬ:

Извините, что я добавил это, но я скопировал мою старую версию.Он по-прежнему не работает даже при использовании асинхронного запроса, ниже приведена текущая версия функции postToDB:

@implementation dbconnect

-(void) postToDB:(NSString*) msg{
    NSString *myphp = @"/Applications/MAMP/htdocs/databases/test.php";
    NSURL *url = [NSURL URLWithString:myphp];
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    [request setPostValue:msg forKey:@"message"];
    [request startAsynchronous];
}

@ end

1 Ответ

1 голос
/ 06 июля 2011

Все остальное в стороне, ваш запрос никогда не выполняется.Обязательно вызовите startSynchronous или startAsynchronous для объекта запроса.Пожалуйста, прочитайте "Как использовать это" руководство по ASIHTTPRequest.

...