Я пытаюсь создать целевое приложение 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