只要按钮点击触发Web服务,数据就会在数据库中输入两次?

时间:2012-05-21 09:18:15

标签: php iphone ios xcode

我有一个xcode项目,我需要在按钮点击时输入数据,然后在TableView中显示它。

示例:Twitter(关注/取消关注)。

1.点击朋友的图标,我的朋友列表出现了。

2.当我点击我的任何朋友时,他们的朋友列表会出现在tableview中,并带有与他们对应的按钮(共同的朋友有取消关注按钮)。

3.现在,当我点击关注按钮并返回查看我的朋友列表时,该特定朋友已被添加两次。

到目前为止我做了什么:

检查sql db是否也存在于其他地方。

检查是否正在调用webservice两次。

一切都很好。我也有iMac和Macbook Pro,它们都有同样的问题。 我已经重新安装了两次Xampp,但结果仍然相同。

供您参考,以下是我用于Xcode项目的php。

<?php
 $id =  $_REQUEST['id'];
 $fid = $_REQUEST['fId'];
 $firstName = $_REQUEST['firstName'];
 $lastName = $_REQUEST['lastName'];

 $con = mysql_connect("localhost","root","");
 if(!$con)
 die("Connection failed"."<br/>");

 $db = mysql_select_db("db",$con);
 if(!$db) die("Database not found!"."<br/>");

 $query = "INSERT INTO $id(firstName,lastName,folks_id)     VALUES('$firstName','$lastName','$fid')";
 print  $query;
 mysql_query($query,$con);
 mysql_close($con);

?>

编辑:Xcode部分供参考

-(IBAction)followButtonClicked:(UIButton *)sender
    {

  NSMutableString *postString = [NSMutableString stringWithString:kFollowURL];
    [postString appendString: [NSString stringWithFormat:@"?%@=%@", kId, [user objectForKey:@"id"] ]];
    [postString appendString: [NSString stringWithFormat:@"&%@=%@", kfId, [fId objectForKey:@"fID"] ]];
    [postString appendString: [NSString stringWithFormat:@"&%@=%@", kfirstName, [firstNameDict objectForKey:@"firstName"] ]];
    [postString appendString: [NSString stringWithFormat:@"&%@=%@", klastName, [lastNameDict objectForKey:@"lastName"] ]];
    [postString appendString: [NSString stringWithFormat:@"&%@=%@", kprofileType, [profileTypeDict objectForKey:@"profileType"] ]];

    [postString setString: [postString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    NSLog(@"post string = %@", postString);

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:postString]];

    [request setHTTPMethod:@"POST"];

    followConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
    NSLog(@"postconnection: %@", followConnection);

    //Get JSON Response from server

    NSData *dataURL =  [NSData dataWithContentsOfURL: [ NSURL URLWithString: postString ]];    
    NSString *serverOutput = [[NSString alloc] initWithData:dataURL encoding: NSASCIIStringEncoding];

    NSLog(@"serverOutput = %@", serverOutput);

 } 

2 个答案:

答案 0 :(得分:1)

您的数据库表中是否有主键。

如果不是如何可以针对相同的id插入值。

答案 1 :(得分:0)

[求助]做了这个伎俩的事情就是我把fid作为独特的......所以现在每当我点击跟随按钮时,就会输入一个而不是两次。

感谢所有人的帮助和支持。