2015-07-27 3 views
-1

Я пытаюсь обновить таблицу SQL из скрипта PHP, который получает свои инструкции POST из приложения iPhone, которое я пытаюсь разработать. Приложение работает нормально, и есть соединения, однако у меня возникает ощущение, что PHP-скрипт не подбирает то, что я отправляю из приложения (поскольку моя база данных не обновляется). Я использую стандартное приложение - настройку базы данных PHP.

Может кто-нибудь, пожалуйста, проверьте мой пост + пост со стороны приложения? У меня есть то, где он ломается. Если я запустил PHP-скрипт, мои эхо-инструкции (ниже) пустые. Я размещаю весь код ниже.

PHP сторона

<?php 
$servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "myDB"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 

if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
    $header = $_POST['header']; 
// $description = $_POST['description']; 
// $city = $_POST['city']; 

    $sql = "UPDATE CityTable SET head=header WHERE id=1"; 

if ($conn->query($sql) === TRUE) { 
    echo "Record updated successfully"; 
} else { 
    echo "Error updating record: " . $conn->error; 
} 
// $para = $_POST['parameter']; 
// $parad = $_POST['parameterData']; 
    var_dump($_POST); 
    echo '<br>', '<br>'; 

    echo "Header, description and city:" , '<br>', '<br>'; 

    echo "Header : " .$header, '<br>'; 
    echo "Desc : " .$description, '<br>'; 
    echo "City : ".$city, '<br>','<br>'; 

// echo "Para : " .$para, '<br>'; 
// echo "Parad : ".$parad, '<br>'; 
$conn->close(); 

?> 

Мой ViewController

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController{ 
    NSMutableData *mutableData; 

#define URL   @"http://mydb.com/upload.php" // change this URL 
#define NO_CONNECTION @"No Connection" 
#define NO_VALUES  @"Please enter parameter values" 

} 

- (void)viewDidLoad { 

    [super viewDidLoad]; 

} 

-(IBAction)sendDataUsingPost:(id)sender{ 

    [self sendDataToServer :@"POST"]; 

} 

-(void) sendDataToServer : (NSString *) method{ 

    NSString *head = header.text; 
    NSString *desc = description.text; 
    NSString *cty = city.text; 

    if(head.length > 0 && desc.length > 0 && cty.length > 0){ 

     serverResponse.text = @"Sending to server..."; 

     NSURL *url = nil; 
     NSMutableURLRequest *request = nil; 

     // Only Difference between POST and GET is only in the way they send parameters 

     if([method isEqualToString:@"POST"]){ 

      NSString *parameter = [NSString stringWithFormat:@"header=%@&description=%@&city=%@", head, desc, cty ]; 
      NSData *parameterData = [parameter dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]; 
      url = [NSURL URLWithString: URL]; 
      request = [NSMutableURLRequest requestWithURL:url]; 
      [request setHTTPBody:parameterData]; 

     } 

     [request setHTTPMethod:@"POST"]; 
     [request addValue: @"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 

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

     if(connection) 
     { 

      mutableData = [NSMutableData new]; 

     }else{ 

      serverResponse.text = NO_CONNECTION; 

     } 

    }else{ 

     serverResponse.text = NO_VALUES; 

    } 

} 

#pragma mark NSURLConnection delegates 

-(void) connection:(NSURLConnection *) connection didReceiveResponse:(NSURLResponse *)response 
{ 
    [mutableData setLength:0]; 
} 

-(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
    [mutableData appendData:data]; 
} 

-(void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
{ 
    serverResponse.text = NO_CONNECTION; 
    return; 
} 

-(void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    NSString *responseStringWithEncoded = [[NSString alloc] initWithData: mutableData encoding:NSUTF8StringEncoding]; 
    //NSLog(@"Response from Server : %@", responseStringWithEncoded); 
    NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[responseStringWithEncoded dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil]; 
    serverResponse.attributedText = attrStr; 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
} 

@end 
+2

$ SQL = "голова UPDATE CityTable SET = заголовок WHERE ID = 1"; должен быть head = '$ header', правильно? – Typoheads

+0

На клавиатуре есть клавиша переключения. Пожалуйста, используйте его. Я исправил ваши недостающие капитализации для вас. – Dakkaron

+1

Вы должны использовать подготовленные заявления. – Jens

ответ

1

Ваш запрос отсутствует переменная $header.

Исправленный запрос:

$sql = "UPDATE CityTable SET head='{$header}' WHERE id=1"; 
0

Вы не включили в запросе вашей переменной $header, поэтому значение в $header не используется для обновления столбца голову в вашей базе данных.

Изменить эту строку:

$sql = "UPDATE CityTable SET head=header WHERE id=1"; 

к:

$sql = "UPDATE CityTable SET head= '".$header."' WHERE id= 1"; 
+0

спасибо, но я до сих пор не получаю никаких данных даже на свой PHP-скрипт. если я запустил скрипт echo. Возвращаемое значение $ header пусто, так что это огромная проблема в этом – Saucepan

+0

@Saucepan, позвольте мне увидеть код для вашей формы, который выполняет POST. –

+0

все это в коде My ViewController. В разделе (void) sendtoServer. Спасибо! – Saucepan

Смежные вопросы