从SQL表JSON编码 - > JSON问题

问题描述:

我正在学校作业,我必须将Twitter转储作为SQL并将其保存为JSON(用于D3)。但是,我在使用JSON编码时遇到了一些问题。我能够得到日期,用户,转推,收藏夹等所有功能,但由于某种原因,推文的实际文本只能编码为“文本”。我已经检查过表格,并且其中的所有内容看起来都正确,但出于某种原因,我的编码器没有正确编码文本。下面是我对Twitter的SQL表编码成JSON代码:从SQL表JSON编码 - > JSON问题

<?php 
$dsn = 'mysql:host=localhost;dbname=twitter'; 
    define('MYSQL_USER','root'); 
    define('MYSQL_PASS','dismypassword'); 

$tweets = "SELECT `id`,`date`,`screen_name`,`favorite_count`,`favorited`,'text' as 'textThing' FROM tweets"; 

$sql = $tweets; 

header("Content-Type: application/json"); 

try { 
    $db = new PDO($dsn, MYSQL_USER, MYSQL_PASS); 
    $statement = $db->prepare($sql); 
    $statement->execute(); 
    $data = array(); 
    while (($row = $statement->fetch(PDO::FETCH_ASSOC))) { 
     $data[] = $row; 
    } 
    echo json_encode($data); 
} catch (PDOException $e) { 
    die('Query failed: ' . $e->getMessage()); 
} 

>

从这个输出生成JSON文件看起来像这样(其中文本被简单地来了? “文”:

[ 

{ 
id: "704419321326510080", 
date: "2016-02-29 22:33:48", 
screen_name: "cscstars", 
favorite_count: "0", 
favorited: "0", 
textThing: "text" 
}, 

{ 
id: "704419329287331840", 
date: "2016-02-29 22:33:50", 
screen_name: "Wary12", 
favorite_count: "0", 
favorited: "0", 
textThing: "text" 
}, 

{ 
id: "704419365588865024", 
date: "2016-02-29 22:33:58", 
screen_name: "lgib15", 
favorite_count: "0", 
favorited: "0", 
textThing: "text" 
}, 

{ 
id: "704419366243151874", 
date: "2016-02-29 22:33:59", 
screen_name: "jacqui4peace", 
favorite_count: "0", 
favorited: "0", 
textThing: "text" 
}, 
+0

这是如何插在桌子上的?你可以运行选择外部PHP来检查?也许在phpmyadmin。既然你在这里,如果表有正确的数据,'var_dump($ data);''的结果是什么? (你可以限制选择,所以它不会太长) – FirstOne

+0

MySQL正在产生(例如)文本,如:“RT @ Notnow71:正确!妥协是使这个国家的工作,双方*造成僵局#ImWithHerhttps://t.co/YGeâ“ 当我对它进行编码时,它就是简单的”文本“ –

+1

这是'var_dump'中的问题吗?或者你正确地检查数据库?请在var_dump($ data)中输入(至少有一部分)输出...' – FirstOne

,我发现我的问题的根源这不是JSON编码器可言,相反,它是在鸣叫文本特殊字符,这是造成功能失效我擦洗后。推特SQL表功能完美工作。