Невозможно загрузить NSData в MySQL через PHP

0

Я делаю работу с серверами для своего iPhone-приложения, и по какой-то причине imageData не будет загружаться. Я был бы признателен, если бы вы могли взглянуть на мой PHP-код и сказать, есть ли проблема.

addImage.php вызывается после вызова метода addrecipie.

Мой код Obj-c для загрузки изображения:

NSString *name =  [@"Name: " stringByAppendingFormat:@"%d", arc4random()%20091011];
    NSString *username = [@"User: " stringByAppendingFormat:@"%d", arc4random()%20091011];
    NSString *description =  [@"Description: " stringByAppendingFormat:@"%d", arc4random()%20091011];
    NSString *shortDescription =  [@"ShortDescription:  " stringByAppendingFormat:@"%d", arc4random()%20091011];
    SBJsonWriter *writer = [[SBJsonWriter alloc] init];
    NSArray *array = [NSArray arrayWithObjects:@"llama", @"30", @"beef", @"beef", @"beefy", nil];
    NSString *ingredients = [writer stringWithObject:array];
    NSString *method = ingredients;
    NSString *category = @"Health";
    NSString *length = @"20";
    [writer release];
    NSArray *arr = [NSArray arrayWithObjects:name,description,shortDescription,ingredients,method,UIImageJPEGRepresentation([UIImage imageNamed:@"cupboard.jpg"], 1.0),username,length,category, nil];
    NSDictionary *dict = [[NSDictionary alloc] initWithObjects:arr forKeys:recipieKeys];
    [[AccountManager sharedManager] addRecipie:dict];
    [dict release];

- (NSString *)addRecipie:(NSDictionary *)recipie {
    NSData *data = [recipie objectForKey:@"image"];
    //form data away....

    NSString *url = [NSString stringWithFormat:@"http://...com/(..).php?name=%@&description=%@&shortDescription=%@&ingredients=%@&method=%@&username=%@&length=%@&category=%@", [recipie objectForKey:@"name"], [recipie objectForKey:@"description"], [recipie objectForKey:@"shortdescription"], [recipie objectForKey:@"ingredients"], [recipie objectForKey:@"method"], [recipie objectForKey:@"username"], [recipie objectForKey:@"length"], [recipie objectForKey:@"category"]];
    NSString *escaped = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];   
    [escaped stringByReplacingOccurrencesOfString:@"$" withString:@"%24"];
    [escaped stringByReplacingOccurrencesOfString:@"&" withString:@"%26"];
    [escaped stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];
    [escaped stringByReplacingOccurrencesOfString:@"," withString:@"%2C"];
    [escaped stringByReplacingOccurrencesOfString:@"/" withString:@"%2F"];
    [escaped stringByReplacingOccurrencesOfString:@":" withString:@"%3A"];
    [escaped stringByReplacingOccurrencesOfString:@";" withString:@"%3B"];
    [escaped stringByReplacingOccurrencesOfString:@"=" withString:@"%3D"];
    [escaped stringByReplacingOccurrencesOfString:@"?" withString:@"%3F"];
    [escaped stringByReplacingOccurrencesOfString:@"@" withString:@"%40"];
    [escaped stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
    [escaped stringByReplacingOccurrencesOfString:@"\t" withString:@"%09"];
    [escaped stringByReplacingOccurrencesOfString:@"#" withString:@"%23"];
    [escaped stringByReplacingOccurrencesOfString:@"<" withString:@"%3C"];
    [escaped stringByReplacingOccurrencesOfString:@">" withString:@"%3E"];
    [escaped stringByReplacingOccurrencesOfString:@"\"" withString:@"%22"];
    [escaped stringByReplacingOccurrencesOfString:@"\n" withString:@"%0A"];
    ASIHTTPRequest *req = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:escaped]];
    [req startAsynchronous];
    if (![req error]) {
        NSString *ids = [req responseString];
        ASIFormDataRequest *reqs = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:[@"http://maxkdevelopment.co.uk/recipes/addimage.php?id=" stringByAppendingFormat:@"%@", [ids stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]]]];
        [reqs setData:data forKey:@"image"];
        [reqs startAsynchronous];
        if (![reqs error]) {
            return [reqs responseString]; 
        }
        else {
            return [[reqs error] description]; 
        }
    }
    else {
        NSLog(@"%@", [[req error] description]);
    }
    return @"";
}

(addImage.php)

<?php
$id = $_GET['id'];
mysql_connect(...);
mysql_select_db("...") or die(mysql_error());
$query = "SELECT * FROM recipies WHERE id=$id";
$result = mysql_query($query);
if (mysql_num_rows($result) > 0) {
$sql = sprintf("UPDATE recipies SET Image = '%s' WHERE id=$id", mysql_real_escape_string(file_get_contents($_FILES["image"]["tmp_name"])));
$results = mysql_query($sql) or die(mysql_error());
$error = mysql_error();
echo "error: $error";
}
?>

(GetImage.php)

<?php
$id = $_GET['id'];
mysql_connect(...);
mysql_select_db(...");
$query = "SELECT * FROM recipies WHERE id=$id";
$result = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_assoc($result)) {
        echo $row['Image'];
    }
}
?>

(Добавить Recipe.php)

<?php
function uk_date() {
    $sign = "-"; 
    $h = "0"; 
    $dst = "true"; 
    if ($dst) {
        $daylight_saving = date('I');
        if ($daylight_saving){
           if ($sign == "-"){ $h=$h-1;  }
           else { $h=$h+1; }
      }
    }
    $hm = $h * 60;
    $ms = $hm * 60;
    if ($sign == "-"){ $timestamp = time()-($ms); }
    else { $timestamp = time()+($ms); }
    return $gmdate = gmdate("d/m/Y g:i:s A", $timestamp);
}
$name = $_GET['name'];
$description = $_GET['description'];
$shortDescription = $_GET['shortDescription'];
$ingredients = $_GET['ingredients'];
$category = $_GET['category'];
$method = $_GET['method'];
//$image = $_GET['image'];
$username = $_GET['username'];
$length = $_GET['length'];
$dateAdded = uk_date();
$conn = mysql_connect('...');
mysql_select_db('...');
$query = sprintf("INSERT INTO recipies (Name, Description, shortDescription, Ingredients, Method, Length, dateAdded, Username, Category) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')",
    mysql_real_escape_string($name),
    mysql_real_escape_string($description),
    mysql_real_escape_string($shortDescription),
    mysql_real_escape_string($ingredients),
    mysql_real_escape_string($method),
    mysql_real_escape_string($length),
    mysql_real_escape_string($dateAdded),
    mysql_real_escape_string($username),
    mysql_real_escape_string($category));

    $result = mysql_query($query) or die(mysql_error());

    $query2 = "SELECT * FROM `recipies` WHERE `Name` = $name AND `shortDescription` = $shortDescription";
    $result2 = mysql_query($query2) or die(mysql_error());
    if (mysql_num_rows($result2) > 0) {
        while($row = mysql_fetch_assoc($result2)) {
        die($row['id']);
        }
    }
?>
  • 0
    Какая часть не работает?
  • 0
    часть addImage.
Показать ещё 3 комментария
Теги:
nsdata
image-uploading

1 ответ

1
Лучший ответ

Вы пишете рецепт "recipie" в SQL файле addImage.php. Если ваше имя таблицы не указано неправильно, то script будет возвращать 0 строк и не выполнять последующие запросы.

  • 0
    Хотя проверять это, кажется, так вы и назвали. Есть чек, хотя.
  • 0
    Да, я знаю. Я назвал базу данных неправильно. Я искал свой код, и кажется, что проблема в том, что идентификатор не отображается в скрипте addrecipie.php. Я получаю сообщение об ошибке: у You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ': 2964774 AND shortDescription` = ShortDescription: 1988287'`
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню