NSDisctionary для базы данных MySQL - PullRequest
0 голосов
/ 07 сентября 2011

У меня есть NSDictionary, который выглядит так:

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"Movies", @"Category", @"Swedish", @"Language" , nil];

Я конвертирую это в представление JSON, после этого строка выглядит так:

{"Category":"Movies","Language":"Swedish"}

Я загружаю это на свой сервер, используя ASIHTTPRequest (POST-метод), и теперь я хочу ввести это в свою базу данных. Я не заставлю это работать. Я использую этот цикл, но он вставляет оба значения в оба столбца:

$decoded = strip_tags(json_decode($_POST['NSDict']));

// Установка соединения с БД здесь

foreach ($decoded as $value) {
    $result = mysql_query("INSERT INTO testtable (category, language) VALUES ('".$value."', '".$value."')") or die(mysql_error());

    echo $result;
}

Как мне изменить мой PHP, чтобы вставлять фильмы в категорию, а шведский - в язык?

// Спасибо!


хорошо .. это сработало:

<?php

$decoded = json_decode($_POST['Hej']);
//echo $decoded->{'Language'};


$link = mysql_connect("localhost","","");
mysql_query("SET NAMES 'utf8'", $link);
mysql_select_db("quizerDB");

foreach ($decoded as $name => $value) {

$value = json_decode(json_encode($value),true);

$result = mysql_query("INSERT INTO testtable (category, language) VALUES ('".$value['Category']."', '".$value['Language']."')") or die(mysql_error());

echo $result;

}

?> 

есть что-нибудь, что я мог бы сделать лучше? отсутствует в безопасности и т. д .??

1 Ответ

0 голосов
/ 08 сентября 2011

если вы попробуете print_r ($ decoded); Вы можете увидеть структуру декодированной строки JSON. Я предполагаю, что он возвращает std_object вместо массива.

Полагаю, вы должны иметь возможность использовать $ value-> category и $ value-> Language, чтобы получить нужные данные.


если вы используете этот код.

$json = '{"Category":"Movies","Language":"Swedish"}';
$decoded = json_decode($json);

print_r($decoded);

Вы можете видеть, что он возвращает это.

stdClass Object
(
    [Category] => Movies
    [Language] => Swedish
)

если вы пройдете через это, вы получите только «Фильмы» и «Шведский» в каждом цикле. вам нужно сделать JSON-декодирование в массив с объектами stdClass, если вы хотите пройти через них.

$ decoded-> Категория; и $ decoded-> Language; вернет "Фильмы" и "Шведский" соответственно.

...