Вставить в удаленную базу данных ASIFormDataRequest: получение кода 400, неверный запрос - PullRequest
0 голосов
/ 08 января 2012

Я пытаюсь вставить данные в базу данных на веб-сервере.Я использую MySQL, Appache и PHP

Xcode

*-(IBAction)saveRecord:(id)sender{
    UITextField *description_txtfield = (UITextField*)[self.tableView viewWithTag:11];
    description_string = description_txtfield.text;
    NSLog(description_string);

    NSURL *url = [NSURL URLWithString:@"http://192.168.1.140/~admin/qw/"];
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    [request setPostValue:description_string forKey:@"product_name"];
    [request setDelegate:self];
    [request startAsynchronous];

    [self.navigationController popToRootViewControllerAnimated:YES];
}
- (void)requestFinished:(ASIHTTPRequest *)request {    

    if (request.responseStatusCode == 400) {
        NSLog(@"Invalid code");        
    } else if (request.responseStatusCode == 403) {
        NSLog(@"Code already used");
    } else if (request.responseStatusCode == 200) {
        NSLog(@"OK");

    } else {
        NSLog(@"Unexpected error");
    }
     }*

- (void)requestFailed:(ASIHTTPRequest *)request
{    
    NSError *error = [request error];
    NSLog(error.localizedDescription);
}   

index.php имеет следующий код внутри для обработки вставки.

Function redeem() {

        // Check for required parameters
        if (isset($_POST["product_name"])) {

            // Put parameters into local variables
            $rw_app_id = $_POST["product_name"];
            // Add tracking of redemption
            $stmt = $this->db->prepare("INSERT INTO inventory (product_name) VALUES (?)");
            $stmt->bind_param($rw_app_id);
            $stmt->execute();
            $stmt->close();

        }
        sendResponse(400, 'Invalid request');
        return false;

    }

Может кто-нибудь сказать мне, что я здесь не так делаю?Я продолжаю получать Неверный код, который является Bad Request-400.

1 Ответ

0 голосов
/ 17 мая 2012

Вы пропустили ответ заголовка и возврат в вашем операторе if. В противном случае он провалится и получит 400 каждый раз.

    Function redeem() {

            // Check for required parameters
            if (isset($_POST["product_name"])) {

                // Put parameters into local variables
                $rw_app_id = $_POST["product_name"];
                // Add tracking of redemption
                $stmt = $this->db->prepare("INSERT INTO inventory (product_name) VALUES (?)");
                $stmt->bind_param($rw_app_id);
                $stmt->execute();
                $stmt->close();
                sendResponse(200, 'Ok');
                return true;
            }
            sendResponse(400, 'Invalid request');
            return false;

        }
...