我想建立一個客觀的C應用程序使用ASIHTTPRequest發佈數據到遠程數據庫。目前,我正在使用MAMP服務器,並正在努力使其運行。 php文件在線運行時工作正常,但我無法讓iphone應用程序將數據發佈到php文件。這裏是我的代碼:ASIHTTPRequest問題 - 無法POST數據到數據庫
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
主要
#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虛擬連接得到它的工作和主要方法是最簡單的選項。當然,在真正的應用程序,我將使用視圖來觸發這種行爲......
我的代碼編譯和up..but沒有被貼到我的數據庫沒有錯誤,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
你有沒有考慮過與主要混亂是問題的原因?你正在嘗試做所有的數據,但你還沒有打電話給UIApplicationMain。你確定所有的數據連接都已設置好嗎?也許你應該創建一個帶有按鈕的視圖並對其進行「正確」測試 –