簡體   English   中英

json_encode中的時髦輸出

[英]Funky output in json_encode

當我對MySQL數據庫的響應進行json_encode時,我得到了一些奇怪的輸出。 我是非常新的PHP,只在學校工作,任何幫助表示贊賞。

這是代碼:

<?php
require_once('./database.php');

header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");

if (isset($_GET['format'])) {
    $format = filter_var($_GET['format']);
}

if (isset($_GET['action'])) {
    $action = filter_var($_GET['action'], FILTER_SANITIZE_STRING);
    $tableName = "sk_$action";
}

$query = "SELECT * FROM $tableName";

if (isset($_GET['course'])) {
    $course = filter_input(INPUT_GET, 'course');
    $query .= " WHERE courseID = :course_id";
}

$statement = $db->prepare($query);
$statement->bindValue(':course', $course);
$statement->execute();

$response = $statement->fetchAll();

$statement->closeCursor();

echo json_encode($response);

以下是回復:

在此輸入圖像描述

我不知道01來自何處,也不知道如何擺脫它們。 有人可以指點我正確的方向嗎?

好的,所以我將其添加到代碼中,現在應用程序崩潰了。

$response = $statement->fetchAll(PDO::FETCH_ASSOC);

$statement->closeCursor();

if ($format == 'json') {
    echo json_encode($response);
}
if ($format == 'xml') {
    $xml = new SimpleXMLElement($response[0]);
    array_walk_recursive($response, array($xml, 'addChild'));
    print $xml->asXML();
}

JSON部分正常工作,但是當我有format=xml ,頁面不會加載。 得到了那些好心理的家伙?

這些是由於PDOStatement::fetchAll()的默認fetch_style ,它返回行的0索引和命名列。

PDO :: FETCH_BOTH(默認值):返回由結果集中返回的列名和0索引列號索引的數組

您可以使用PDO::FETCH_ASSOCPDO::FETCH_OBJ來僅捕獲列名稱(前者生成一個以列名稱為鍵的關聯數組,后者生成一個匿名對象,其屬性為列名稱):

$response = $statement->fetchAll(PDO::FETCH_ASSOC);

將數據庫fetch_style更改為關聯數據庫:

如果您使用的是PDO,請查看PDO :: FETCH_ASSOC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM