Проблема кодирования Json в PHP 5 - PullRequest
0 голосов
/ 12 октября 2011

Я пытаюсь использовать Json с моей базой данных, используя php5, но страдаю от странного результата. Эта база данных имеет четыре поля - «id», «Title», «Thread», «date», но результат jason выглядит следующим образом.

[
   {
        "0": "1",
        "id": "1",
        "1": "Title 1",
        "Title": "Title 1",
        "2": "Thread 1",
        "Thread": "Thread 1",
        "3": "2011-10-19",
        "date": "2011-10-19"
    },
    {
        "0": "2",
        "id": "2",
        "1": "Title 2",
        "Title": "Title 2",
        "2": "Thread 2",
        "Thread": "Thread 2",
        "3": "2011-10-03",
        "date": "2011-10-03"
     }
]

Вы можете увидеть дублированную информацию в результате. Откуда они?? Я приложу код, который я написал ... Мастера Jason & PHP, пожалуйста, просветите меня: '(.. Заранее спасибо .. Попробую решить еще раз, пока жду вашей помощи ....

    private static function queryAndFetch($tableName)
    {
        $query = "SELECT id, Title, Thread, date From $tableName";
        $result = mysqli_query(self::$link, $query);
        if(!($result))
        {
            echo "Error";
            exit;
        }


        // $posts = mysqli_fetch_assoc(self::$result); - Working
        self::$fetchedResult = array();
        while($row = mysqli_fetch_array($result))
        {
            self::$fetchedResult[] = $row;
        }
    }

    private static function encode()
    {
        //print_r(self::$fetchedResult);
        //if($format == 'json') {
        header('Content-type: application/json');
        echo json_encode(self::$fetchedResult);
        //}
        //echo "hi".json_last_error();
    }
}

Ответы [ 2 ]

2 голосов
/ 12 октября 2011

mysqli_fetch_array возвращает строки результатов с ассоциативными и перечисляемыми ключами. Если вам нужны только ключи ассоциативного массива, используйте mysqli_fetch_assoc.

1 голос
/ 12 октября 2011

Похоже, ваш mysqli_fetch_array ($ result) возвращает ассоциативный массив, а не индексированный массив.

Попробуйте это изменение:

while($row = mysqli_fetch_array($result)) {
    self::$fetchedResult[] = array(
        'id' => $row->id,
        'Title' => $row->Title,
        'Thread' => $row->Thread,
        'date' => $row->date
    );
}

Если это не сработает, попробуйте использовать$ row ['id'], $ row ['Title'], $ row ['Thread'] и $ row ['date'].

В качестве альтернативы, чтобы избежать записи каждого поля, изменитеспециально для mysqli_fetch_assoc ($ result).

Я подозреваю, что это ваша проблема?

Спасибо, MyStream

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...