0

自分のサイト(PHPで記述されている)にフォームデータを送信したいiPhoneアプリケーションがあります。

                     //This problem has now been solved. Typo in url.. :(
NSString *urlString = "http://www.mywebsite.com/test.php";
NSUrl *url = [NSURLWithString:urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
NSString *variableToSend = [NSString stringWithFormat:@"name=John"];
//I have assumed that where I write "name=John" that "name" is in Php equal
//to $_POST['name']?, and that "John" is the value of it?

[request setHTTPMethod:@"POST"];

//I don't quite understand these..
[request setValue:[NSString stringWithFormat:@"%d", [variableToSend length]] forHTTPHeaderField:@"Content-length"];
[request setHTTPBody:[variableToSend dataUsingEncoding:NSUTF8StringEncoding]];

(void)[[NSURLConnection alloc] initWithRequest:request delegate:self];

私のphpファイルは$name= $_POST['name'];を実行します $nameをデータベースに書き込みます。method = "post"、action = ""、 "name"という名前のtextFieldを使用して<form>を作成しましたが、これは機能しました。その値がデータベースに送信されました。

私はこのコード例を多くの回答で見ましたが、それは私にとってはうまくいきます..私が理解していないコード行のいくつかは、phpの設定方法とコードの方法に何か問題があると思います変数を送信しています..誰かが私がどこで間違ったのか知っていますか?

(コードは現在ここで手動で記述されているため、タイプミスがある可能性がありますが、すべてがxcodeでコンパイルされ、NSLog(@ "%@"、request)の場合、 "<NSURLConnection:0x1d342c24>"などが表示されます。これが正しいかどうかわかりません。)

編集

私のtest.php

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
</head>
<body>


<?php

$connection = mysql_connect("host","un","pw");
if (!$connection){
 die('Error: ' . mysql_error());
}
if(isset($_POST['name']))
{

$name = $_POST['name'];
mysql_select_db("db", $connection);

mysql_query("INSERT INTO tablename(Name)
VALUES ('$name')");

mysql_close($connection);
}
?>
</body>
</html>

性感染症

4

1 に答える 1

1

私はあなたの問題に気づきました:あなたのNSURLConnectionインスタンスは決して開始していません(あなたのNSURLConnectionDelegateメソッドのどれも呼び出されないに違いありません)。

次のいずれかを使用します。

NSURLConnection* connection =     [[NSURLConnection alloc] initWithRequest:request delegate:self];
[connection start];

あるいは単に:

[[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];

現在使用しているコードの代わりに。

ソース:

http://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSURLConnection_Class/Reference/Reference.html

編集失敗と成功の際にNSURLConnectionオブジェクトを解放することを忘れないでください(正確に1つが1回だけ呼び出されます)。そうしないと、リークが発生します。ARCを使用している場合は、ivarに保管してください。そうしないと、開始直後に割り当てが解除される可能性があります(これについては確認が必要です)。

于 2012-07-18T22:45:17.620 に答える